【发布时间】:2023-02-02 00:31:33
【问题描述】:
我有一个列表,其中包含 a 中的三个元素。我正在尝试打开和关闭一个 CSS 类,该类在单击列表元素时会触发文本。我创建了一个函数并使用 for 循环来检查被单击的列表元素的数组索引。
我定义了以下内容:
清单项目:
<ul>
<li class="items line-through">Watch</li>
<li class="items line-through">Shoes</li>
<li class="items line-through">Cake</li>
</ul>
var list = document.getElementsByClassName("line-through");
创建了一个函数,用于在发生“单击”事件时根据索引从列表中切换数组元素
function checkItem(index) {
console.log("event = " + index)
list[index].classList.toggle("line-through");
console.log("list = " + index);}
for (var i = 0; i <= list.length; i++) {
console.log("i= " + i);
list[i].addEventListener("click", checkItem(i));}
所以按照我的逻辑,我声明了 for 和 i 索引值为零,这是数组中第一个列表的值。然后我添加了打印件以检查它是否运行,然后检查是否单击了列表 0、1 或 2。如果是,运行函数并切换列表[i]。如果不是,则 i++ 并验证下一个。
问题是现在它立即将切换添加到列表中的第一个和最后一个项目。我也试过使用 querySelectorAll("li") 但它说 list[i] 是未定义的,我不明白为什么,因为在控制台中验证 list[0] 时它显示了第一个元素。
【问题讨论】:
标签: javascript list dom toggle