风风无
2016-09-09 13:30
<script type="text/javascript">
window.onload=function(){
var oDiv=document.getElementById('div1');
oDiv.onmouseover=function(){
startMove(0);
}
oDiv.onmouseout=function(){
startMove(-200);
}
}
var timer=null;
function startMove(Target){
var speed;
var oDiv=document.getElementById('div1');
if(oDiv.offsetLeft>Target){speed=-10}
else{speed=10}
clearInterval(timer);
timer=setInterval(function(){
if(oDiv.offsetLeft==Target){
clearInterval(timer);
}
else{
oDiv.style.left=oDiv.offsetLeft+speed+'px';
}
},30)
}
</script>
来大神讲讲变量的秘密。
主要是为了提高程序性能,其实在函数外声明也是可以找到,只不过花费的时间比在函数内要长..
你这样申明, 其实已经算是全局变量了, 不信你可以试试, 函数申明是可以给它程序 里面的子函数用的, 子函数里面不用再重新申请这个变量。
// 如果oDiv放在onload之外声明,这时候还没有加载到下面的html标签,
你这句话是错误的, 如果没有加onload,才是在执行script的时候, 这个div还没有被创建, 所以你获取不到, 而一旦加了onload, 就是表示你的html加载完成以后, 再执行onload里面的内容 ,, 所以你理解有误
这个问题我想明白了。因为代码是从上往下被加载的,如果oDiv放在onload之外声明,这时候还没有加载到下面的html标签,这个声明是无效的。所以写在头部的js代码要取对象必须在onload里面才不会出错!
JS动画效果
113925 学习 · 1443 问题
相似问题