[英]addEventListener to class after for loop; Vanilla JS
我正在尝试让事件侦听器为在循环内创建的类工作。 我无法让它工作,有什么建议吗?
window.onload = function(){
var div = document.createElement('div'),
container = document.getElementById('container'),
classname = document.getElementsByClassName("hello");
div.className = 'hello';
var tasks = [
'One',
'Two',
'Three',
'Four'
];
for (var i = 0; i < tasks.length; ++i) {
container.innerHTML += '<div class="hello"><p>' + tasks[i] + '</p></div>';
}
classname.addEventListener('click', function(){
this.className = 'done';
});
console.log(classname);
};
classname
是一个NodeList
, addEventListener
是单个节点的方法。 您需要遍历元素:
for (i = 0; i < classname.length; i++) {
classname[i].addEventListener('click', function() {
this.className = 'done';
});
}
getElementsByClassName
返回一个 NodeList,因此您不能在其上添加事件侦听器。 您一定想向此列表中的元素添加事件侦听器。
所以这给出了:
//NodeList has not forEach method, but we can take it from an array
[].forEach.call( classnameElements, function( classnameElement ){
classnameElement.addEventListener('click', function(){
this.className = 'done';
});
}):
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.