我想将click事件添加到我的项目列表中。这是一个待办事项列表,因此,每当我单击列表项时,列表项都应具有直行样式。但是,我做错了。控制台总是说:

Uncaught TypeError: togList.addEventListener is not a function




var togList = document.getElementsByTagName("li");

function togglesOnOff() {
        togList.classList.toggle("done");
}

togList.addEventListener("click", togglesOnOff);

最佳答案

您收到错误消息是因为getElementsByTagName不返回元素,而是返回collection of elements

因此,您需要遍历集合:



var togList = document.getElementsByTagName("li");

function togglesOnOff() {
  this.classList.toggle("done");
}

Array.from(togList).forEach(item => item.addEventListener("click", togglesOnOff));

.done {
  background: red;
}

<ul>
  <li>Item one</li>
  <li>Item two</li>
  <li>Item three</li>
</ul>





您还需要更改功能以使用当前元素来切换类。为此,我们只需将togList更改为this

07-24 17:37