javascript DOM 编程艺术中的动画效果代码..

function moveElment(elementID,final_x,final_y,inteval){
    var message=document.getElementById(elementID);
    var xpos=parseInt(message.style.left);
    var ypos=parseInt(message.style.top);
    if(xpos==final_x && ypos==final_y){
        return true;
    }
    if(xpos <final_x){
        xpos++;
    }
    if(xpos>final_x){
        xpos--;
    }
    if(ypos<final_y){
        ypos++;
    }
    if(ypos>final_y){
        ypos--;
    }
    message.style.left=xpos+"px";
    message.style.top=ypos+"px";
    var repeat="moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";
    movement=setTimeout(repeat,interval);
}

addLoadEvent(moveMessage);

两个问题:1) 为什么后面要把数值转为字符串形式?
      2)  为什么要把moveElement赋值给局部变量? 而且赋值时elementID,final_x,...要在左右加上+号,为什么在elementID要加上单引号?final_x等不用?

希望大神能给予帮助 小弟感激不尽。
在web道路上不断努力中...

UncleKeith
浏览 1634回答 2
2回答

__blank

(1)说得是+"px"那两个属性赋值么?不加px的话mr.css表示不认识mr.js弄过来的东西是个啥。写css定位样式位置的时候肯定要带px单位的嘛(2)var repeat = "moveElement(' "+elementID+" ',"+final_x+","+final_y+","+interval+")";不是你说的那样,而是你分组分错了,我这样加下划线不知道你能不能明白了,双引号大部分是作用于逗号括号这些的和变量无关。可以不赋值给局部变量啊,直接可以填在setTImeout函数里,但作者已经做出了解释,这样做是为了更好的阅读代码,不然那么长,填在函数里面不好阅读。
打开App,查看更多内容
随时随地看视频慕课网APP