#javascript #ecmascript-6 #timer #counter #addeventlistener
Вопрос:
Я написал следующий код, чтобы делать счетчик при каждом щелчке. Но в то же время с первым щелчком ничего не происходит, и кнопка начинает отсчет со второго щелчка. Можете ли вы помочь мне понять, в чем проблема с этим кодом и почему счетчик не запускается при первом нажатии?
<button id="btn" class="btn" >click me</button>
<p>0</p>
<script>
let count = 0;
let number =document.querySelector("p");
const btn =document.getElementById("btn");
btn.addEventListener("click" , ()=>
number.innerHTML = count
)
</script>
Комментарии:
1. Вы увеличиваете значение после его установки. Воспользуйся
count
.
Ответ №1:
count
возвращает значение перед добавлением 1. Разделите его на две строки:
let count = 0;
let number = document.querySelector("p");
const btn = document.getElementById("btn");
btn.addEventListener("click", () => {
count ;
number.innerHTML = count;
});
<button id="btn" class="btn">click me</button>
<p>0</p>
Ответ №2:
Как кто-то уже упоминал, оператор post-increment ( count
) увеличивает значение после его оценки (отсюда и сообщение).
Одним из вариантов было бы использовать вместо этого оператор предварительного приращения ( count
), который вычисляет переменную после ее увеличения.
let count = 0;
const number = document.querySelector("p");
const btn = document.getElementById("btn");
btn.addEventListener("click", () => number.innerHTML = count);
<button id="btn" class="btn">click me</button>
<p>0</p>
Ответ №3:
Сначала увеличьте значение count, а затем назначьте его ( number.innerHTML
). Используйте оператор предварительного приращения ( count
)