javascript - 为scrollTop添加延迟?
问题描述
是否可以严格在下面的代码中为 scrollTop 函数添加延迟?
function btns(evt, btnName) {
var i, containerMain, tablinks;
containerMain = document.getElementsByClassName("containerMain");
tablinks = document.getElementsByClassName("tablinks");
for (i = 0; i < containerMain.length; i++) {
containerMain[i].classList.remove('active');
}
for (i = 0; i < tablinks.length; i++) {
tablinks[i].classList.remove('active');
}
document.getElementById(btnName).classList.add('active');
evt.currentTarget.classList.add('active');
for (i = 0; i < containerMain.length; i++) {
containerMain[i].scrollLeft = 0;
containerMain[i].scrollTop = 0;
}
}
解决方案
setInterval
当所有元素都滚动时,您也可以使用和清除计时器。
function btns(evt, btnName) {
var i, containerMain, tablinks;
containerMain = document.getElementsByClassName("containerMain");
tablinks = document.getElementsByClassName("tablinks");
for (i = 0; i < containerMain.length; i++) {
containerMain[i].classList.remove('active');
}
for (i = 0; i < tablinks.length; i++) {
tablinks[i].classList.remove('active');
}
document.getElementById(btnName).classList.add('active');
evt.currentTarget.classList.add('active');
for (i = 0; i < containerMain.length; i++) {
containerMain[i].scrollLeft = 0;
}
i=0;
const timer = setInterval(() => {
containerMain[i++].scrollTop = 0;
if(i >= containerMain.length) clearInterval(timer);
}, 1000);
}
推荐阅读
- jsf - 为什么updateActionListener在commandButton的actionListener之前执行?
- amazon-web-services - 通过 AWS 组织账户管理用户
- excel - 将 Gsheet 页面导入 Excel
- c++ - 递归嵌套算法
- opengl - 将 gl_InstanceID 绑定为统一位置是否合法?
- actions-on-google - 生产版本突然不再可用
- android - 一个意料之外的问题发生了。请稍后再试。(3200000) 在游戏控制台中
- sql - 如何选择多个现有列名并将其分组为 1 列?
- java - 如何获取即将到来的特定时间的 java.time.LocalDateTime 对象?
- java - 不兼容的源代码 - 错误的符号类型:jlabel1.setIcon