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

同样的js代码,需要在页面加载之后执行,放在body底部就能实现,但是设置外部js文件就不行?

<script>

var content = document.getElementById("content");

var liHeight = 34; //因为设置了li与li之间的间距是10px,所以是34px。

//alert(content.innerHTML);

content.innerHTML += content.innerHTML;

content.scrollTop = 0;

var time;


function startMove(){

content.scrollTop++;

time = setInterval("scrollUp()",50);

}

function scrollUp(){

if(content.scrollTop % liHeight == 0){

clearInterval(time);

setTimeout("startMove()",2000);

}else{

content.scrollTop++;

if(content.scrollTop >= content.scrollHeight/2){ //scrollHeight是元素完整高度,offsetHeight是元素可见部分高度

content.scrollTop = 0;

}

}

}

setTimeout("startMove()",2000);

</script>

放在body底部可以执行,但是设置一个外部js文件,把所有代码写在window.onload = function{ }中报错,说startMove没有定义?

正在回答

1 回答

因为onload事件处理函数执行结束之后,其内部定义的属性和方法也就无法再访问了,而且,结尾处的“setTimeout()”方法传入的第一个参数是一句调用方法的代码,而不是一个匿名内部方法。

尝试一下,把startMove()和scrollUp()抽取出来,不要在onload事件的处理方法中定义,onload事件处理方法只用来执行“setTimeout("startMove()",2000);”,开启滚动效果。

或者,把“scrollUp()”定义为“startMove()”中的匿名内部方法,之后再把startMove()定义为“setTimeout()”中的匿名内部方法。

希望对你有帮助!

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

Cancer_Scorpio 提问者

嗯嗯,把函数抽取出来就可以实现了,非常感谢!
2016-09-06 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

同样的js代码,需要在页面加载之后执行,放在body底部就能实现,但是设置外部js文件就不行?

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