问答详情
源自:2-1 JS速度动画

关于 var odiv = document.getElementById('div1');

 window.onload=function(){

 var odiv=document.getElementById("div1");

 odiv.onmouseover = function(){

 startMove();

 }

 }

function startMove(){

var odiv=document.getElementById("div1");

setInterval(function(){

odiv.style.left = odiv.offsetLeft + 10 + 'px';

},30)

这段里面 var odiv = document.getElementById('div1');有两次,想知道后面这次的意义是什么,读取不到前面写的么?

提问者:9527AImm 2016-06-01 09:59

个回答

  • 飞舞的墨
    2016-06-01 11:05:13
    已采纳

    这两次定义的odiv的作用域都是在各自的函数体内。也就是startMove()是获取不到onload的匿名函数中定义的odiv.

    如果你想只定义一次,那就将odiv定义成全局变量,这个页面的任何函数都可以直接获取的到。

  • cosmochina
    2016-06-01 14:01:35

    楼上正解

  • rouken
    2016-06-01 11:07:37

    两个都是局部变量,要分别在两个函数内声明