У меня есть простая функция JavaScript, которая должна изменять класс и, следовательно, цвет 4 кнопок при нажатии.Они не все меняются при первом нажатии кнопки «Нажми меня» - только цвета для кнопок 1 и 3 меняются на красный.Снова нажмите кнопку «Нажми меня», затем изменит цвет кнопки2, а после очередного нажатия кнопки4 обновится.
<style>
.button {
background-color: green;
}
.updatedButton {
background-color: red;
color: white;
}
</style>
<script>
function changeColor() {
var elems = document.getElementsByClassName("button");
for (var i=0; i<elems.length; i++) {
console.log(JSON.stringify(elems[i].getAttribute('id')));
elems[i].classList.add('updatedButton');
elems[i].classList.remove('button');
}
}
</script>
<button id="button1" class="button">a</button>
<button id="button2" class="button">b</button>
<button id="button3" class="button">c</button>
<button id="button4" class="button">d</button>
<button onclick="changeColor()">Click me</button>
Я зарегистрировал в консоли идентификатор элементов, которые были внутри цикла, и это то, что я получил, показывая, что обновляются только определенные кнопки.
Первый щелчок: "button1«(15: 16: 52: 545)« button3 »(15: 16: 52: 547)
Второй щелчок:« button2 »(15: 16: 55: 981)
Третийclick: "button4" (15: 16: 58: 841)
Я попытался перезагрузить страницу, но поведение не изменилось.Кто-нибудь может объяснить, почему это происходит вместо того, чтобы каждая кнопка меняла цвет при первом нажатии кнопки?