我想将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
。