如何在 javascript 中使用 values data-num html 属性
how to use values data-num html attribute in javascript
我希望数字增加到 HTML(data-num="") 中的任务。
但是我的代码只适用于一个数据编号。
第二个数字不变。
如何让多个数字同时变化?
var number = document.querySelector('.numbers'),
numberTop = number.getBoundingClientRect().top,
start = 0,
end = number.dataset.num;
window.addEventListener('scroll', function onScroll() {
if (window.pageYOffset > numberTop - window.innerHeight / 2) {
this.removeEventListener('scroll', onScroll);
var interval = setInterval(function() {
number.innerHTML = ++start;
if (start == end) {
clearInterval(interval);
}
}, 5);
}
});
html {
height: 1000px;
}
<p data-num="548" class="numbers">0</p>
<p data-num="548" class="numbers">0</p>
问题是即使您通过 class 选择器进行查询,您也只引用了第一项。您需要使代码循环遍历元素数组。
试试这个
var number = document.querySelectorAll('.numbers'),
numberTop = number[0].getBoundingClientRect().top,
start = 0,
end = number[0].dataset.num;
window.addEventListener('scroll', function onScroll() {
if (window.pageYOffset > numberTop - window.innerHeight / 2) {
this.removeEventListener('scroll', onScroll);
var interval = setInterval(function() {
++start;
number.forEach( (item,index) => (item.innerHTML = start));
if (start == end) {
clearInterval(interval);
}
}, 5);
}
});
我希望数字增加到 HTML(data-num="") 中的任务。 但是我的代码只适用于一个数据编号。 第二个数字不变。 如何让多个数字同时变化?
var number = document.querySelector('.numbers'),
numberTop = number.getBoundingClientRect().top,
start = 0,
end = number.dataset.num;
window.addEventListener('scroll', function onScroll() {
if (window.pageYOffset > numberTop - window.innerHeight / 2) {
this.removeEventListener('scroll', onScroll);
var interval = setInterval(function() {
number.innerHTML = ++start;
if (start == end) {
clearInterval(interval);
}
}, 5);
}
});
html {
height: 1000px;
}
<p data-num="548" class="numbers">0</p>
<p data-num="548" class="numbers">0</p>
问题是即使您通过 class 选择器进行查询,您也只引用了第一项。您需要使代码循环遍历元素数组。
试试这个
var number = document.querySelectorAll('.numbers'),
numberTop = number[0].getBoundingClientRect().top,
start = 0,
end = number[0].dataset.num;
window.addEventListener('scroll', function onScroll() {
if (window.pageYOffset > numberTop - window.innerHeight / 2) {
this.removeEventListener('scroll', onScroll);
var interval = setInterval(function() {
++start;
number.forEach( (item,index) => (item.innerHTML = start));
if (start == end) {
clearInterval(interval);
}
}, 5);
}
});