javascript - 如何在javascript中使用values data-num html属性
问题描述
我希望将数字增加到 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>
解决方案
问题是即使您通过类选择器进行查询,您也只引用了第一项。你需要让你的代码循环通过一个元素数组。
试试这个
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);
}
});
推荐阅读
- jpa - java.lang.IllegalStateException:无法加载缓存项
- sql - 添加计算列时,“as”附近的语法不正确
- jdbc - 为什么从 BigDecimal 转换为 DECIMAL 时 impala-jdbc 会抛出异常?
- html - 如何修复拒绝在框架中显示,因为它将'X-Frame-Options'设置为'sameorigin
- node.js - 如何使用nodejs在cassandra中插入媒体文件?
- mysql - Buffio 扫描仪停止从 mysqldump 标准输出读取一半的行
- tensorflow - 我可以使用 tensorflow keras 模型优化工具包对 keras 预训练模型进行修剪吗?
- typescript - 如何在 Angular 6 中生成一个包含所有模块、组件、服务的库并在另一个项目中使用该库
- c# - C# WPF - 任务与多线程,并从中更新 UI 组件
- r - 用条件估算值单元