查看以下HTML和JS:
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时,显示按钮2的console.log
。如果单击按钮2,则会出现相同的情况,显示按钮1的console.log
。
我有什么问题?如何解决问题?
Here is a JSFiddle以及该问题的工作示例。
答案 0 :(得分: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)');
}