【问题标题】:Did conditions with click events work with negative statements?带有点击事件的条件是否适用于否定语句?
【发布时间】: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


【解决方案1】:

正如@Prera​​k Sola 评论的那样,您已经反转了条件检查,但没有反转整个条件。

if(!event.target.pathname === '/info' && !event.target.classList.contains('NoTrigger'))

您还需要将|| 反转为&& .试试看,让我们知道

【讨论】:

  • 确实有效,谢谢!抱歉这个菜鸟问题,我没有反映运营商。
猜你喜欢
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
  • 2019-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-12
相关资源
最近更新 更多