#javascript #html
Вопрос:
во-первых, извините, если вы не понимаете названия
У меня есть список, содержащий элементы, как только я нажимаю на элемент, класс «s» должен быть добавлен в него и удален из других, которые я пытаюсь удалить по циклу, но не сработало
function selectIt(x) {
x.classList.add('s');
var items = document.querySelectorAll('item');
for (i = 0; i < items.length; i ) {
items[i].classList.remove('s');
}
}
.s {
background: red;
}
<div class="list">
<div class="item" onclick="selectIt(this)">item 1</div>
<div class="item s" onclick="selectIt(this)">item 2</div>
<div class="item" onclick="selectIt(this)">item 3</div>
<div class="item" onclick="selectIt(this)">item 4</div>
<div class="item" onclick="selectIt(this)">item 5</div>
</div>
Комментарии:
1. поместите свой
x.classList.add('s');
после вашего цикла for
Ответ №1:
Вы не определяете тип селектора, querySelectorAll
как если бы вы хотели искать класс или идентификатор. Добавьте s
класс в конце, а не в начале, так как определение его в начале также удалит s
класс из текущего элемента.
Кроме того, вы можете искать s
класс в поле «Запрос» вместо поиска элемента.
function selectIt(x) {
var items = document.querySelectorAll('.s');
for (i = 0; i < items.length; i ) {
items[i].classList.remove('s');
}
x.classList.add('s');
}
.s {
background: red;
}
<div class="list">
<div class="item" onclick="selectIt(this)">item 1</div>
<div class="item s" onclick="selectIt(this)">item 2</div>
<div class="item" onclick="selectIt(this)">item 3</div>
<div class="item" onclick="selectIt(this)">item 4</div>
<div class="item" onclick="selectIt(this)">item 5</div>
</div>
Ответ №2:
Вам вообще не нужно запускать цикл. Сначала удалите класс s
из предыдущего div
элемента и добавьте его в новый div
элемент, на который нажата кнопка.
function selectIt(x) {
let item = document.querySelector('.s');
item.classList.remove('s')
x.classList.add('s');
}
.s {
background: red;
}
<div class="list">
<div class="item" onclick="selectIt(this)">item 1</div>
<div class="item s" onclick="selectIt(this)">item 2</div>
<div class="item" onclick="selectIt(this)">item 3</div>
<div class="item" onclick="selectIt(this)">item 4</div>
<div class="item" onclick="selectIt(this)">item 5</div>
</div>
Ответ №3:
Ты можешь сделать это вот так
function selectIt(x) {
var elements = document.getElementsByClassName('item');
for (var i = 0; i < elements.length; i ) {
elements[i].style.backgroundColor = 'white';
}
x.style.backgroundColor = "red"
}
<div class="list">
<div class="item" onclick="selectIt(this)">item 1</div>
<div class="item" onclick="selectIt(this)">item 2</div>
<div class="item" onclick="selectIt(this)">item 3</div>
<div class="item" onclick="selectIt(this)">item 4</div>
<div class="item" onclick="selectIt(this)">item 5</div>
</div>
В принципе, сначала я сделал цвет фона элемента класса = белый
, затем я сделал фон «этого» красным