2014-11-12 3 views
0

Взгляните на последующих HTML и JS:Script Работает Неверная функция

HTML:

<button onclick="alertFunction()">Choose Option Modal (Button 1)</button> 

<button onclick="alertFunction2()">Veloce Modal (Button 2)</button> 

JS:

function alertFunction() { 
    alert("Please choose relevant options before adding to cart."); 
} 

function alertFunction2() { 
    alert("item(s) added to your cart"); 
} 


$(function() { 

(function() { 
    window.alert = function(text) { 
     if (text.indexOf("Please choose relevant options before")) { 
      console.log('Choose an Option Modal Open (Button 1)'); 
     } else if (text.indexOf("item(s) added to your cart")) { 
      console.log('Veloce Modal Open (Button 2)'); 
     } 
    }; 
})(); 

}); 

В приведенном выше сценарии, если я нажимаю на кнопку, либо 1 или 2, срабатывает предупреждение. Затем текст предупреждения берется JS, и мы проверяем текст предупреждения. Если текст содержит определенные слова, тогда функция запускается, в этом случае только console.log.

Проблема у меня есть, когда я нажимаю кнопку 1 console.log для кнопки 2, что показывает. То же самое происходит, если я нажму кнопку 2, появится console.log для кнопки 1.

Какая у меня ошибка и как исправить проблему?

Here is a JSFiddle с рабочим примером проблемы.

+1

почему вы перезапись 'window.alert'? –

+0

'indexOf' делает * нет * возвращает логическое значение. Он возвращает * index * в строке или '-1', если он не найден. –

+1

@ k-nut - Когда кнопка нажата в моем магазине eCommerce, моя CMS отвечает предупреждением. Я переоцениваю это поведение и демонстрирую свой собственный модальный подход. – L84

ответ

3

indexOf() возвращает первый индекс, в котором находится подстрока. В вашем случае, когда текст соответствует, возвращается 0, который оценивается как false. Все остальное, включая -1 (означающий не указано) оценивается как true.

Проверьте возвращаемое значение:

if (text.indexOf("Please choose relevant options before") > -1) { 
     console.log('Choose an Option Modal Open (Button 1)'); 
    } else if (text.indexOf("item(s) added to your cart") > -1) { 
     console.log('Veloce Modal Open (Button 2)'); 
    } 

http://jsfiddle.net/fd7yn78u/

Смежные вопросы