为了账号安全,请及时绑定邮箱和手机立即绑定

关于startScroll()中area.scrollTop++何时执行的问题

第一次执行setTimeout(startScroll,delay)的时候。先执行time=setInterval("scrollUp()",speed);

执行scrollUp(),的时候,area.scrollTop为0,那么就会直接跳到

if(area.scrollTop % iliHeight==0){
   clearInterval(time);
   setTimeout(startScroll,delay);
   }

这个时候area.scrollTop为0,判断结果为1,那么又重新回到了

function startScroll(){
  time=setInterval("scrollUp()",speed);
  area.scrollTop++;
  }

我这样理解肯定是不对的,不理解的就是第一次执行startScroll

,其中的area.scrollTop++;是什么时候执行的?

 

正在回答

2 回答

  time=setInterval("scrollUp()",speed);
  area.scrollTop++;

我昨天 问过一个搞前端的工程师, 他说setInterval 并不是for循环一样, 不执行完就不会跳出。

setInterval  只是在speed的时间内回调scrollUp这个函数, 所以相对机器时间来讲,中间的间隔足够再执行其它语句, 所以你下面的area.scrollTop,基本上会和setInterval("scrollUp()",speed);同时执行, 不同的是:area.scrollTop++  只执行一次,就不再执行了, 后面只会执行setInterval 的循环

0 回复 有任何疑惑可以回复我~
#1

慕粉3308051 提问者

非常感谢!
2016-12-06 回复 有任何疑惑可以回复我~

按你的说法的话在if判断前area.scrollTop++已经执行一次了,所以下面的才会执行下去,不然进入一个死循环,个人觉得最好把area.scrollTop++放在setInterval前

0 回复 有任何疑惑可以回复我~
#1

慕粉3308051 提问者

是这样的,可是答案中的代码的执行顺序是怎样的呢,很想弄明白这个问题。
2016-09-04 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
信息滚动效果制作
  • 参与学习       47753    人
  • 解答问题       321    个

萌妹子带您快速学习滚动效果,掌握无缝滚动和歇间性滚动的制作方法

进入课程

关于startScroll()中area.scrollTop++何时执行的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信