function movement(targetId,x_final,y_final,interval){
if(!document.getElementById) return false;
if(!document.getElementById(targetId)) return false;
var test = document.getElementById(targetId);
var xpos = parseInt(test.style.left);
var ypos = parseInt(test.style.top);
if(xpos==x_final && y==y_final){
return true;
}
if(xpos < x_final){
xpos++;
}
if(xpos > x_final){
xpos--;
}
if(ypos < y_final){
ypos++;
}
if(ypos > y_final){
ypos--;
}
test.style.left = xpos +"px";
test.style.top = ypos + "px";
var repeat = "movement('"+targetId+"',"+x_final+","+y_final+","+interval+")";
setTimeout(repeat,interval);
}
var repeat = "movement('targetId',x_final,y_final,interval)";刚学习,求教下 repeat这个里面 双引号 和单引号有什么用...为什么要用啊??

解决方案 »

  1.   

    setTimeout(字符串,毫秒)等待指定的毫秒后 将字符串作为代码运行你上面这个字符串运行时相当于调用了"movement函数 他吧外部变量的值直接写进函数的参数调用中去了
      

  2.   

    setTimeout的第一个参数可以是字符串,也可以是函数句柄。
    这样写是为了用字符串方式传递参数,将变量构造成实参。 targetId的位置是字符串类型,所以要加引号为了传递参数,也可以写成:
    setTimeout(function(
      return function(id, x, y, n){
        movement(id, x, y, n);
      }
    )(targetId,x_final,y_final,interval), interval);