#javascript #html #css
Вопрос:
Когда нажимается моя кнопка, она становится красной. При этом счетчик увеличивается. Однако я хотел бы, чтобы счетчик был динамичным. Таким образом, когда кнопка отменяется, счетчик тоже уменьшается. Однако я не могу этого сделать. Я не получил никаких ошибок.
var buttons = document.getElementsByClassName("button");
var count = 0;
var disp = document.getElementById("display");
for (let i = 0, l = buttons.length; i < l; i ) {
buttons[i].addEventListener('click', function() {
buttons[i].classList.toggle('active');
if (this.classList.contains("active")) {
if (!this.classList.contains("active")) {
count--;
disp.innerHTML = count;
}
count ;
disp.innerHTML = count;
}
})
}
.active {
background-color: #E68352 !important;
}
.button {
background-color: #FFFFFF;
}
<input type="button" id="button1" class="button" value="A" />
<input type="button" id="button2" class="button" value="B" />
<input type="button" id="button3" class="button" value="C" />
<p>
Button Clicked <span id="display">0</span> Times
</p>
Ответ №1:
вы должны использовать else
свой второй , если никогда не сможете достичь того, как вы это написали:
var buttons = document.getElementsByClassName("button");
var count = 0;
var disp = document.getElementById("display");
for (let i = 0, l = buttons.length; i < l; i ) {
buttons[i].addEventListener('click', function() {
buttons[i].classList.toggle('active');
if (this.classList.contains("active")) {
count ;
} else {
count--;
}
disp.innerHTML = count;
})
}
.active {
background-color: #E68352 !important;
}
.button {
background-color: #FFFFFF;
}
<input type="button" id="button1" class="button" value="A">
<input type="button" id="button2" class="button" value="B">
<input type="button" id="button3" class="button" value="C">
<p>
Button Clicked <span id="display">0</span> Times
</p>
Ответ №2:
Вы можете сделать что-то вроде этого:
var buttons = document.getElementsByClassName("button");
var count = 0;
var disp = document.getElementById("display");
for (let i = 0, l = buttons.length; i < l; i ) {
buttons[i].addEventListener("click", function() {
buttons[i].classList.toggle("active");
if (this.classList.contains("active")) count ;
else count--;
disp.innerHTML = count;
});
}
.active {
background-color: #e68352 !important;
}
.button {
background-color: #ffffff;
}
<input type="button" id="button1" class="button" value="A" />
<input type="button" id="button2" class="button" value="B" />
<input type="button" id="button3" class="button" value="C" />
<p>
Button Clicked
<span id="display">0</span> Times
</p>
if else
Будет проверяться "active"
, содержит ли кнопка класс, если это так, она увеличит значение count
на 1
, или же, если кнопка не содержит класса "active"
, она уменьшит значение count
на 1
.