Javascript 即使event.target不是指定的元素,if语句仍在运行
我在我的网页上有一个简单的脚本,当用户点击页面上的特定按钮时,它应该会打开一个模式 但是,由于某些原因,即使事件目标不是指定的元素,它仍然会触发模式打开。显然,这是不应该发生的,我不明白为什么会发生 下面是JavaScript: 这是HTML: 感谢所有的帮助Javascript 即使event.target不是指定的元素,if语句仍在运行,javascript,html,Javascript,Html,我在我的网页上有一个简单的脚本,当用户点击页面上的特定按钮时,它应该会打开一个模式 但是,由于某些原因,即使事件目标不是指定的元素,它仍然会触发模式打开。显然,这是不应该发生的,我不明白为什么会发生 下面是JavaScript: 这是HTML: 感谢所有的帮助 谢谢。这行代码有两个问题: if(e.target == modalTrigger[i] || modalTrigger[i].children) 首先,| |无法测试e.target是否是多个可能值之一。条件的评估如下所示: (e.t
谢谢。这行代码有两个问题:
if(e.target == modalTrigger[i] || modalTrigger[i].children)
首先,| |无法测试e.target是否是多个可能值之一。条件的评估如下所示:
(e.target == modalTrigger[i]) || modalTrigger[i].children
第二个问题是modalTrigger[i]。children是一个列表。它本身永远是一个真实的价值
所以你的if条件总是正确的
如果要测试e.target是modalTrigger[i]还是modalTrigger[i]的后代,我的方法是使用.parentNode属性从e.target向上导航,查看modalTrigger[i]是否是祖先:
功能包含家长、孩子{
while child!=null{
如果父项===子项,则返回true;
child=child.parentNode;
}
返回false;
}
document.onclick=function{
var modalTrigger=document.queryselectoral.ts-modal\u触发器,
modals=document.queryselectoral.ts-modal,
我
fori=0;iif(e.target == modalTrigger[i] || modalTrigger[i].children)
(e.target == modalTrigger[i]) || modalTrigger[i].children