function moveElement(elementID,final_x,final_y,interval) {
var elem = document.getElementById(elementID);
var xpos = parseInt(elem.style.left);
var ypos = parseInt(elem.style.top);
if(xpos == final_x && ypox == final_y){
return true;
}
if(xpos < final_x){
xpos++;
}
if(xpos > final_x){
xpos--;
}
if(ypos < final_y){
ypos++;
}
if(ypos > final_y){
ypos--;
}
elem.style.left = xpos + "px";
elem.style.top = ypos + "px";

movement = setTimeout("moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")",interval);
}
为什么"moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")"  
为什么这条语句里中变量要加"+"号和双引号啊?
而且还要给它ID加单引号..去掉的话就会无效.为什么啊?

解决方案 »

  1.   

    双引号是结束前面的
    "moveElement('"  他已经结束了然后再+elementId 这个变量,后面一次类推
    ID加单引号是把他传递过去是字符串
      

  2.   

    "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")" 第一种解释:(变相解释)、"+elementID+"
       这个的意思说,在字符串中elementID是变量,把变量的值放在该字符串中。
        如果elementID="ids",final_x=1,final_y=2,interval=3  上面的字符串就等于
       "moveElement('ids',1,2,3)" 
    第二种解释。(合理解释)
       +号是连接符号
       上面表达式解释为
       "moveElement('" 连接一个变量 elementID 再连接 "'," 再连接final_x....
        就等于
        "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")" 
       
      
      

  3.   

      "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")"  
    我明白了.因为那些变量都是数值,不加双引号就会误解为"算数加减号"
    而'"+elementID+"'  是字符串.所以用单引号.不过也可以用双引号的.只是不可以在字符里同时用2个双引号.所以用单引号.
      

  4.   

    "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")"   在外围的整个双引号是怎么理解啊?
    是不是因为setTimeout的第一个参数是要字符串的?
      

  5.   

    不完全对,请看http://baike.baidu.com/view/1861781.htm?fr=ala0_1
    还有从setTimeout和setInterval的对比文章http://book.csdn.net/bookfiles/344/10034413534.shtml注意其中这样一个写法:
     setTimeout(function(){var today = new Date();     alert("The time is: " + today.toString());}, 500);
      

  6.   

    这段代码是javascript DOM 编程艺术里的,我记得 呵呵
      

  7.   

    setTimeout第一个参数一般是个字符串,完了+号只是拼接字符串用的,如果连字符串拼接都不懂,还是先把编程基础搞好吧
      

  8.   


    window.setTimeout方法一般使用两个显式参数,第二个参数是时间,毫秒级,整数,表示延迟多少毫秒执行某个函数.
    第一个参数描述的就是需要延迟执行的函数了.
    如定义方法:
    function init(){alert('延迟1秒后执行我咯')};
    window.setTimeout("init()",1000);
    这里好象这么写也可以:window.setTimeout(init(),1000);就不具体测试了.还是按照上面的吧.window.setTimeout('init()',1000)也可以哦;单引号双引号都可以,但是如果这么写:window.setTimeout("init('param')",1000);单引号部分表示传入的参数.为了区分,外面的当然只能用双引号拉.下面这段你可以不看>>>>上面提到:window.setTimeout(init({}),1000)方式,要是这样就好了,参数可以传个对象,但是好象不支持.不知道有没有人这么用过?