我有一个问题。我在 x 子元素(按钮等)中有一个 div 元素,并且我将在子元素中添加一个带有循环的事件监听器,我提供了一个 fiddle :
<button test="page1">page1</button>
<button test="page2">page2</button>
<br>
<button test2="page1">page1</button>
<button test2="page2">page2</button>
var location = document.querySelectorAll("[test]");
var location2 = document.querySelectorAll("[test2]");
location.forEach(function(e1, e2){
location[e2].addEventListener("click", function(){
alert(location[e2].getAttribute("test"));
});
});
for(var i = 0; i < location2.length; i++){
location2[i].addEventListener("click", function(){
alert(location2[i].getAttribute("test2"));
});
}
https://jsfiddle.net/zeus1309/jqL8b0rt/
带有 foreach 的版本有效。但一个与一个不。 我不明白为什么。
最佳答案
不要使用 location2[i].getAttribute("test2")
,而是使用 this.getAttribute("test2")
。
注意:在 forEach()
函数中,您不必使用这两个参数。
var location = document.querySelectorAll("[test]");
var location2 = document.querySelectorAll("[test2]");
location.forEach(function(e){
e.addEventListener("click", function(){
alert(e.getAttribute("test"));
});
});
for(var i = 0; i < location2.length; i++){
location2[i].addEventListener("click", function(){
alert(this.getAttribute("test2"));
});
}
<button test="page1">page1</button>
<button test="page2">page2</button>
<br>
<button test2="page1">page1</button>
<button test2="page2">page2</button>
关于具有自己属性的 Javascript 事件监听器循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42439514/