gpt4 book ai didi

javascript - 有没有办法将参数传递给 addEventListener?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:15:12 25 4
gpt4 key购买 nike

我试图隐藏类( Logo )中的所有元素,但单击的元素除外。所以我写这个只是为了意识到不可能将参数传递给 addEventListener 激活的函数!这似乎……至少可以说是不灵活的。是否有另一种明显的方法来传递我看不到的论点(我对 Javascript 很陌生)?

<!DOCTYPE html>
<head>
<link rel="stylesheet" type="text/css" href="index.css">
<title>Sexism in Silicon Valley</title>
</head>
<body id="body1">
<div class="parent">
<img src="kstartup.png" class="logos" id="id1">
<img src="uber.png" class="logos" id="id2">
<img src="kpcb.png" class="logos" id="id3">
<img id="id4" src="r1startup.png" class="logos">
</div>
<div class="parent" id="parent2">
<img src="zillow.png" class="logos" id="id5">
<img src="github.png" class="logos" id="id6">
<img src="tinde.png" class="logos" id="id7">
<img src="snapchat.png" class="logos" id="id8">
</div>
<script src="index.js"></script>
</body>

</html>

Javascript:

function click(x) {
for (var i = 0; i < logos.length; i++) {
if (x !== i) {
logos[i].style.display = "hidden";
}
}

}

var logos = document.getElementsByClassName("logos");
for (var i = 0; i < logos.length; i++) {
logos[i].addEventListener('click', click(i));
}

最佳答案

您问题的字面答案:

logos[i].addEventListener('click', (function(i) { return function() { click(i); } })(i));

会做你想做的。您需要一个函数来包装 click(i),因为您不想立即执行 click(i);并且你需要另一个函数来关闭 i,否则你会得到看似奇怪的结果(即总是得到 click(logos.length))。

您要做的是根本不使用迭代器。将监听器附加到 #logos 本身;在处理程序中(它将获得一个 event 参数),遍历其子项并与 event.target 进行比较。

关于javascript - 有没有办法将参数传递给 addEventListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33205384/

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