繁体   English   中英

在 for 循环后向类添加事件监听器; 香草JS

[英]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是一个NodeListaddEventListener是单个节点的方法。 您需要遍历元素:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM