简体   繁体   English

我如何确保我的变量在setInterval内部不变

[英]How can I make sure that my variable does not change inside the setInterval

I want to change the scrollLeft of a div on time, 我想按时更改div的scrollLeft,

let's make it simple : 让我们简单点:

var initialValue = $('#myDiv').scrollLeft();
var x = setInterval(function() {
$('#myDiv').scrollLeft("#some value calculated depending on initialValue")
}, 10)

the problem is the initialValue changes over time, the same problem remains when i put it inside the setInterval. 问题是initialValue随时间变化,当我将其放在setInterval中时,仍然存在相同的问题。 How can I make sure that my initialValue variable does not change inside the setInterval ? 我如何确保我的initialValue变量在setInterval内部不变?

Just use the scrollWidth property directly thus: 只需直接使用scrollWidth属性即可:

Note: if you want to start at a particular scroll point, simply set el.scrollWidth to that starting value 注意:如果el.scrollWidth特定的滚动点开始,只需将el.scrollWidth设置el.scrollWidth开始值

 var el = document.querySelector('#myDiv'); var step = (el.scrollWidth - el.scrollLeft)/10; var x = setInterval(function() { el.scrollLeft += step; if(el.scrollLeft >= el.scrollWidth - el.clientWidth) clearInterval(x); }, 100); 
 #myDiv { border: 1px solid black; width: 250px; margin-bottom: 12px; overflow-x: scroll; } 
 <div id="myDiv"> ABCDEFGHIJKLMOPQRSTUVWXYZABCDEFGHIJKLMOPQRSTUVWXYZ </div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM