javascript - 单击同一 nodeList 中的任何节点时,从 nodeList 中删除类名

标签 javascript

我是 javascript 编程的新手,我想了解更多。当我单击同一 nodeList 中的任何节点时,我想从 nodeList 的每个节点中删除类名。

我写了这段代码:

d = document.querySelectorAll(".chat-line__message");
d.forEach(removeHighlight);

function removeHighlight(item){
  item.addEventListener("click", function(){
    item.forEach(function(element){
        element.classList.remove("highlight");
    });
    //for-loop instead of forEach doesn't work either.

  })

}

我做错了什么?谢谢。

最佳答案

要从 nodeList 中的每个节点中删除 .highlight 类,请在 click 事件处理程序中迭代它们并删除 .highlight从那里上课:

var elements = document.querySelectorAll(".chat-line__message");

elements.forEach(function(item) {
  item.addEventListener("click", function() {
    elements.forEach(function(element) {
      element.classList.remove("highlight");
    });
  })
});
ul {
  list-style-type: none;
  padding: 0;
}

li:hover {
  background: cornflowerblue;
}

.chat-line__message {
  font-size: 20px;
  font-weight: bold;
}

.chat-line__message.highlight {
  background: orange;
}
<ul>
  <li class="chat-line__message highlight">A</li>
  <li class="chat-line__message">B</li>
  <li class="chat-line__message highlight">C</li>
  <li class="chat-line__message">D</li>
  <li class="chat-line__message highlight">E</li>
</ul>

关于javascript - 单击同一 nodeList 中的任何节点时,从 nodeList 中删除类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51618643/

相关文章:

javascript - 从 Javascript 的编辑表单传递 id

javascript - @ 在 lodash 的这段代码中做了什么?

Javascript:无法在原型(prototype)函数中调用函数

javascript - MVC3 jquery 后序列化数组

javascript - 使用 jQuery 悬停和着色

javascript - 没有循环的尾递归树遍历

javascript - 内联 block 网格系统 - CSS 不适用于动态创建的元素

javascript - 在 GET 请求中使用 django 和 AJAX 在输入更改时立即更新页面元素

javascript - Angular/Firestore - 'Where' 查询返回错误 'property does not exist on type AngularFirestoreCollection'

javascript - 单击 MVC 应用程序中的标签时如何选中所有复选框?