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

为什么oDIV不能声明成全局变量?要在每个函数里声明一下才不会报错。

<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>

来大神讲讲变量的秘密。

正在回答

3 回答

主要是为了提高程序性能,其实在函数外声明也是可以找到,只不过花费的时间比在函数内要长..

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

你这样申明, 其实已经算是全局变量了, 不信你可以试试, 函数申明是可以给它程序 里面的子函数用的, 子函数里面不用再重新申请这个变量。

// 如果oDiv放在onload之外声明,这时候还没有加载到下面的html标签,

你这句话是错误的, 如果没有加onload,才是在执行script的时候, 这个div还没有被创建, 所以你获取不到, 而一旦加了onload, 就是表示你的html加载完成以后, 再执行onload里面的内容 ,, 所以你理解有误

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

这个问题我想明白了。因为代码是从上往下被加载的,如果oDiv放在onload之外声明,这时候还没有加载到下面的html标签,这个声明是无效的。所以写在头部的js代码要取对象必须在onload里面才不会出错!

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

举报

0/150
提交
取消

为什么oDIV不能声明成全局变量?要在每个函数里声明一下才不会报错。

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