具有自己属性的 Javascript 事件监听器循环

标签 javascript loops

我有一个问题。我在 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/

相关文章:

javascript - 从链接运行脚本

javascript - 如何从按钮属性中获取数据?

jquery循环动画与slidetoggle

带有数据循环的 SQL Server 2005 递归查询 - 这可能吗?

带有通配符和隐藏文件的 Bash for 循环

excel - 总是被踢出潜艇?

javascript - 我在 JavaScript 中遇到了未定义的问题,并且不明白为什么

javascript - 在 SailsJS 0.9.7 中手动包含 Assets

arrays - 从一点在矩阵上的螺旋循环

javascript - 在 hta 应用程序中使用具有滚动效果的 HTML 和 Javascript 显示当前日期和时间