已采纳回答 / DLZer
因为onload事件处理函数执行结束之后,其内部定义的属性和方法也就无法再访问了,而且,结尾处的“setTimeout()”方法传入的第一个参数是一句调用方法的代码,而不是一个匿名内部方法。尝试一下,把startMove()和scrollUp()抽取出来,不要在onload事件的处理方法中定义,onload事件处理方法只用来执行“setTimeout("startMove()",2000);”,开启滚动效果。或者,把“scrollUp()”定义为“startMove()”中的匿名内部方法,之后再把star...
2016-09-03
已采纳回答 / rainy_li3676598
time=setInterval("scrollUp()",speed); area.scrollTop++;我昨天 问过一个搞前端的工程师, 他说setInterval 并不是for循环一样, 不执行完就不会跳出。setInterval 只是在speed的时间内回调scrollUp这个函数, 所以相对机器时间来讲,中间的间隔足够再执行其它语句, 所以你下面的area.scrollTop,基本上会和setInterval("scrollUp()",speed);同时执行, 不同的是:area.sc...
2016-09-02
最新回答 / 李小希
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-...
2016-09-01
这一课讲的逻辑非常混乱,并且有讲解错误的地方,如setTimeout 里面的 area.scrollTop++,并不是一直加1,而是只加1次,容易造成误导
2016-08-28
老师讲的有点复杂。我想这样可以实现的:设一个大的定时器,每个2秒执行一遍小定时器。小定时器里每50毫秒实现moveB.scrollTop+=1; 再执行判断:if(moveB.scrollTop%aheight==0){clearInterval(timer2);}
2016-08-26
理论上当li少到可以全部显示在可视界面的话,偏移时的scrollTop永远少于con1.scrollHeight。就达不到老师的判定条件:
if(moveB.scrollTop>=con1.scrollHeight){
moveB.scrollTop=0;
}else{
moveB.scrollTop+=1;
}
可以用console.log测试box.scrollTop和con.scrollHeight进行验证。
我觉得把添加子结点放在定时器内,让它不断地产生新子结点,达到滚动的目的挺好的。
if(moveB.scrollTop>=con1.scrollHeight){
moveB.scrollTop=0;
}else{
moveB.scrollTop+=1;
}
可以用console.log测试box.scrollTop和con.scrollHeight进行验证。
我觉得把添加子结点放在定时器内,让它不断地产生新子结点,达到滚动的目的挺好的。
2016-08-26