i have some code but i am doing something wrong, how can i increment the value smoothly to 3? At the end when the counter is 3 I should see the initial value “click me: 0”
document.querySelector('.btn-counter').addEventListener('click', (e) => {
const btn = e.target;
let curr = (+btn.dataset.clicks)
btn.dataset.clicks = ++curr % 4;
btn.innerHTML = 'click me: ' + btn.dataset.clicks;
});.btn-counter {
cursor: pointer;
}<div class="btn-counter" id="clicks" data-clicks="0">clikc me: 0</div>
Advertisement
Answer
I think this is what you’re trying to do – note the addition of data-clicks="0" on the element itself.
document.querySelector('.btn-counter').addEventListener('click', (e) => {
const btn = e.target;
let curr = (+btn.dataset.clicks)
btn.dataset.clicks = ++curr % 4;
btn.innerHTML = 'click me: ' + btn.dataset.clicks;
});.btn-counter {
cursor: pointer;
}<div class="btn-counter" id="clicks" data-clicks="0">click me: 0</div>
Turns out thats not what you were after, but instead to animate the count and return to 0.
document.querySelector('.btn-counter').addEventListener('click', (e) => {
let curr = 0;
const btn = e.target;
const delay = 1000;
const increment = () => {
curr++;
btn.innerHTML = curr;
if(curr <4)
setTimeout(increment,delay);
else {
curr = 0
btn.innerHTML = "click me: 0"
}
}
setTimeout(increment,delay);
});.btn-counter {
cursor: pointer;
}<div class="btn-counter" id="clicks">click me: 0</div>