javascript - JS 新手,计数完成后试图阻止我的 div 计数
问题描述
基本上我是 JS 的初学者,我试图让这个 div 在 div 滚动到视图中时开始计数,并在它完成计数后停止计数。我设法让它短暂地工作,但每次我滚动它都会重新开始计数。
非常感谢任何帮助,谢谢。
let stats = document.getElementById('.container-stats');
stats.addEventListener("scroll", () => {
function counter(id, start, end, duration) {
let obj = document.getElementById(id),
current = start,
range = end - start,
increment = end > start ? 1 : -1,
step = Math.abs(Math.floor(duration / range)),
timer = setInterval(() => {
current += increment;
obj.textContent = current;
if (current == end) {
clearInterval(timer);
}
}, step);
}
counter("count1", 0, 6, 3000);
counter("count2", 100, 40, 3000);
counter("count3", 499000, 500000, 3000);
counter("count4", 0, 10, 3000);
counter("count5", 0, 12, 3000);
counter("count6", 0, 10, 3000);
});
解决方案
let stats = document.getElementById('container-stats');
let current = 0;
stats.addEventListener("scroll", () => {
function counter(id, start, end, duration) {
if(current !== undefined) {
let obj = document.getElementById(id),
current = start,
range = end - start,
increment = end > start ? 1 : -1,
step = Math.abs(Math.floor(duration / range)),
timer = setInterval(() => {
current += increment;
obj.textContent = current;
if (current == end) {
clearInterval(timer);
}
}, step);
}
}
counter("count1", 0, 6, 3000);
counter("count2", 100, 40, 3000);
counter("count3", 499000, 500000, 3000);
counter("count4", 0, 10, 3000);
counter("count5", 0, 12, 3000);
counter("count6", 0, 10, 3000);
current = undefined;
});
如果我猜对了,您要求滚动一次会话并计数对吗?给你
推荐阅读
- node.js - Nodejs/Express/Typescript 需要 module.exports
- oracle - 我在我的 SQL Developer 中测试了一个关于“按顺序排列的子查询”的案例
- reactjs - 同一组件上的链接不刷新页面
- graph - 图时间和空间复杂度表示
- android - 从图库中选择视频文件会在 android 中创建一个空白屏幕
- javascript - 数组填充的奇怪行为?
- swift - 更改 SFSafariViewController 的条形颜色
- flutter - 运行 Gradle 任务 'assembleDebug'... [致命错误] aapt2-3.5.0-5435860.pom:2:1:prolog 中不允许内容
- python - 我可以在python的while循环中使用字符串和整数吗?
- ruby-on-rails - 使用关联模型防止 Rails 查询中的 N+1