gpt4 book ai didi

javascript - addEventListener 使用 for 循环并传递值

转载 作者:IT王子 更新时间:2023-10-29 02:49:34 26 4
gpt4 key购买 nike

<分区>

我尝试使用 for 循环将事件监听器添加到多个对象,但最终所有监听器都针对同一对象 --> 最后一个。

如果我通过为每个实例定义 boxa 和 boxb 手动添加监听器,它就可以工作。我猜是 addEvent for 循环没有按我希望的方式工作。也许我完全使用了错误的方法。

示例使用 4 个 class="container"容器 4 上的触发器按预期方式工作。在容器 1、2、3 上触发在容器 4 上触发事件,但前提是触发器已经被激活。

// Function to run on click:
function makeItHappen(elem, elem2) {
var el = document.getElementById(elem);
el.style.backgroundColor = "red";
var el2 = document.getElementById(elem2);
el2.style.backgroundColor = "blue";
}

// Autoloading function to add the listeners:
var elem = document.getElementsByClassName("triggerClass");

for (var i = 0; i < elem.length; i += 2) {
var k = i + 1;
var boxa = elem[i].parentNode.id;
var boxb = elem[k].parentNode.id;

elem[i].addEventListener("click", function() {
makeItHappen(boxa, boxb);
}, false);
elem[k].addEventListener("click", function() {
makeItHappen(boxb, boxa);
}, false);
}
<div class="container">
<div class="one" id="box1">
<p class="triggerClass">some text</p>
</div>
<div class="two" id="box2">
<p class="triggerClass">some text</p>
</div>
</div>

<div class="container">
<div class="one" id="box3">
<p class="triggerClass">some text</p>
</div>
<div class="two" id="box4">
<p class="triggerClass">some text</p>
</div>
</div>

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