Я новичок в программировании на 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.
})
}
Что я делаю неправильно? Спасибо.
Чтобы удалить класс .highlight
из каждого узла в nodeList, проведите по ним в обработчике событий click
и удалите из .highlight
класс .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>
если я понимаю ваши сомнения, чем вы были почти там:
<button onclick="myFunction()">Try it</button>
<div class="myDIV">
This is a DIV element.
</div>
<div class="myDIV">
This is a DIV element.
</div>
<script>
function myFunction()
{
d = document.querySelectorAll(".myDIV");
d.forEach(removeHighlight);
}
function removeHighlight(item) {
item.classList.toggle("highlight");
}
</script>
Получайте удовольствие в кодировании javascript!
item
- это один элемент... тот, который вы назначаете слушателю кликов.
Вы хотите перебрать коллекцию, чтобы удалить класс из всех элементов коллекции
function removeHighlight(item){
item.addEventListener("click", function(){
d.forEach(function(element){
// ^^ iterate collection
element.classList.remove("highlight");
});
});
}