接上篇
补充,有了自动滚动,让他点击的时候停止滚动,再点击继续滚动。
怎么实现呢,就想到了setInterval和clearInterval。
添加点击事件:
$(document).ready(function() {
let stop1 = setInterval(autoScroll1, 100)
//滚动的
$('#autoScroll1').click(function() {
// console.log(stop1)
if (stop1 != "autoScroll1") {
clearInterval(stop1)
stop1 = "autoScroll1";
} else {
stop1 = setInterval(autoScroll1, 100)
}
})
function autoScroll1() {
document.getElementById('autoScroll1').scrollTop += 1;
// let max = document.getElementById('autoScroll1').scrollHeight - (document.getElementById('autoScroll1').screenTop + document.getElementById('autoScroll1').clientHeight);
let autoScroll1 = document.getElementById('autoScroll1')
//判断是否到滚动条底部,误差为1px
let a = autoScroll1.scrollHeight;
let b = autoScroll1.scrollTop;
let c = autoScroll1.clientHeight;
if (b + c >= a - 1) {
document.getElementById('autoScroll1').scrollTop = 0
}
}
})
总结,这里把setInterval 的返回值stop1重新赋值了,
然后通过自己赋值的这个特殊的值(不会被随机数随机到的值)来判断是否在进行这个setInterval函数。
有兴趣的小伙伴自己可以试一下,在你clearInterval后,log一下这个返回值stop1,是一个随机的数字,
本人猜想是:setInterval是一个宏任务,该随机数可能是任务栈中的队列数。(不一定对)
所以就给定一个自我定义的字符串,用来判断该任务是否被clear。
版权声明:本文为weixin_44360092原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。