【发布时间】:2019-10-16 09:32:05
【问题描述】:
我有一个带有单击事件的 eventListener,并且希望始终触发我的函数,但有两个例外。这是我的代码(有效):
function setCookieTrueOnClick (event) {
if (event.target.pathname === '/info' || event.target.classList.contains('NoTrigger') ) {
} else {
triggerTheFunction('true');
}
}
window.addEventListener("click", setCookieTrueOnClick, false);
该事件始终触发,但不会在用户单击具有“NoTrigger”类的框或当用户单击指向 /info 的链接时触发。
现在,另一方面,当我使用否定条件时,代码不起作用(它一直触发函数):
function setCookieTrueOnClick (event) {
if (event.target.pathname !== '/info' || !event.target.classList.contains('NoTrigger') ) {
triggerTheFunction('true');
}
}
window.addEventListener("click", setCookieTrueOnClick, false);
我不明白为什么,我也尝试使用“true”参数设置 eventListener,但它总是一样的。
【问题讨论】:
-
您需要将
||替换为&&,因为其中一个条件始终评估为true -
你的意思是第二个例子? (带有否定条件的那个)
-
是的,在第二个例子中。
-
哦,我现在明白了。如果我使用 ||当我单击带有“noTrigger”类的框时,另一个否定条件变为真,因为我没有单击指向“/info”的链接。
-
并非总是如此。这完全取决于您要实现的逻辑。
标签: javascript onclicklistener addeventlistener