0
var t = 0;
function addDiv()
{
    var div = document.createElement("div");
    t++;
    div.setAttribute("id", "box" + t);
    document.body.appendChild(div);
    AddStyle();
}

var h = 0;
var p = 1;    
function doMove()
{
    var okj = document.getElementById("box" + p);

    if (p <= t) {
        p++; 
    }
    var g = setInterval(function () {
        var go = parseInt(okj.style.left, 0) + 1 + "px";
        okj.style.left = go;
    }, 1000 / 60);
}

我的问题是,在 p 增加 p++ 之后,我var p = 1每次调用都会增加doMove吗?请帮我解决这个问题。

4

1 回答 1

2

根据定义,全局变量具有全局范围,因此您可以在函数中递增或重新分配它们,这将起作用,这真是太棒了!

尽管正如 Borgtex 指出的那样,您的if陈述行不通

if (p <= t) {
   p++; 
}

t您已经在另一个函数中声明了该变量,因此您的doMove()函数无法访问它,因此该语句将始终返回false; 如果您创建t一个全局变量或将其doMove()作为参数传递给您的函数,那么这将起作用。

var p = 1; // this variable is global

function varTest(){
   p++ //This will work because p is global so this function has access to it.
   var t = 0;
}

function anotherTest(){
   if(p<t){   //This will return false - t is not in scope as it was defined in another function
      alert("supercalifragilisticexpihalitoscious"); 
   }
}
于 2013-05-24T08:32:46.097 回答