Javascript 遍历 <li> 列表并分配事件(onitemclick)处理程序不起作用 - 为什么?

标签 javascript arrays event-handling dom-events

我在本练习中的任务是每当有人单击列表中的 li 项目时切换它们的“完成”属性。我找到了其他方法,但这个方法对我不起作用,我很想了解原因。我的代码有什么问题吗?是不是可以像这样分配处理程序,或者我的代码中的其他内容可能是错误的?

var liList = document.querySelectorAll("li");
for (var i = 0; i < liList.length; ++i){
    liList[i].onItemClick = function() {
    liList[i].classList.toggle("done");
    }
}
<ul>
   <li>Notebook</li>
   <li>Jello</li>
   <li>Spinach</li>
   <li>Rice</li>
   <li>Birthday Cake</li>
   <li>Candles</li>
</ul>

最佳答案

使用“onClick”而不是“onItemClick”

window.addEventListener('load', function() {
  document.querySelectorAll("li").forEach(function(v){
    v.addEventListener("click", function(e){
      e.target.classList.toggle("done");
    })
  })
})
li.done {
  color: green
}
<ul>
  <li>Notebook</li>
  <li>Jello</li>
  <li>Spinach</li>
  <li>Rice</li>
  <li>Birthday Cake</li>
  <li>Candles</li>
</ul>

关于Javascript 遍历 <li> 列表并分配事件(onitemclick)处理程序不起作用 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59561384/

相关文章:

python - 如何在Python Azure函数中解析 "Could not load type ' Microsoft.Azure.WebJobs.ParameterBindingData'"?

javascript - 基于索引对 json 嵌套数组进行排序未按预期工作

javascript - 如果您只有使用 JavaScript 的图像数据 url,是否可以旋转图像?

javascript - 如何使用 `localStorage` 来存储整个页面?

javascript - 单击 CKEDITOR 时显示 Bootstrap 工具提示

javascript - 如何获取芯片名称或芯片索引?

php - 如何在多维数组中执行array_search?

javascript - 如何在循环中将选项中的值保存到一个数组单元格

javascript - 如何使用 addEventListener 在数组内导航?

c# - 如何创建仅允许访问 C++ 中特定用户帐户的手动重置事件?