gpt4 book ai didi

javascript - 如果目标是子对象,则函数不会运行

转载 作者:行者123 更新时间:2023-12-03 02:38:06 25 4
gpt4 key购买 nike

我尝试开发一个脚本,只要单击一个元素(包括单击的子元素),该脚本就会运行一个函数。

在这种情况下,页面只需要提醒“done”。然而,由于某种原因——尽管这一切都被正确编程(至少据我所知) - 它仍然不希望按预期工作。

HTML:

<a href="/profile.php" class="nav-user-content_profile" onclick="return false;">
<div class="_user-pfp">
<img src="http://lorempixel.com/100/100">
</div>
<div class="_user-name">
<span>Username</span>
</div>
</a>

JavaScript:

document.onclick = function(e){ // on document click
var links = document.getElementsByTagName("a"); // get all links on page

for(var i = 0; i < links.length; i++){
if(e.target === links[i]){ // if clicked link is parent
e.preventDefault(); // do not redirect
alert("done"); // alert "done" (this all works)
} else {
for(var x = 0; x < links[i].children.length; x++){
if(e.target === links[i].children[x]){ // if clicked link is child
e.preventDefault(); // do not redirect
alert("done"); // alert "done" (this does not work)
}
}
}
}
}

fiddle 供引用:JsFiddle

感谢所有帮助,干杯。

最佳答案

第二个条件for循环计算结果为false由于<html>不是 .children 之一的单<a> document 中的元素.

document在鞋底边界外被点击<a>单击的元素位于 <html> 上元素。

<小时/>

使用现有代码,您可以利用 Element.closest() 带选择器"a"

else { if (e.target.closest("a") !== null) { // do stuff } } 

或者检查是否有 <a>元素位于 e.path

关于javascript - 如果目标是子对象,则函数不会运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48458987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com