js练习中的困扰

通过js 实现简单的文本移动

html文件

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>js动画效果演示</title>    
    </head>
    <body>
        <p id="message">666</p>
        <p id="message2">777</p>    
        <script src="js动画效果.js"></script>
    </body>
</html>

然后js有三个函数 分别是 moveelement函数

function moveElement(elementId,final_x,final_y,interval){
     if(!document.getElementById) return false;
     if(!document.getElementById(elementId)) return false;
    var elem = document.getElementById(elementId);
    var xpos = parseInt(elem.style.left);
    var ypos = parseInt(elem.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++;
    }
    elem.style.left = xpos + "px";
    elem.style.top = ypos + "px";
    var repeat = "moveElement('"+elementId+"')"+final_x+","+final_y+","+interval+")";
    movement = setTimeout(repeat,interval)
    
}

addonloadEvent函数

    function addLoadEvent(func){
    var oldonload = window.onload;
    if( typeof window.onload != "function"){
        window.onload = func;
    }else{
        window.onload = function(){
            oldonload();
            func();
        }
    }

以及positionMessage函数

    if(!document.getElementById) return false;
    if(!document.getElementById("message")) return false;
    var elem = document.getElementById("message");
    elem.style.position = "absolute";
    elem.style.left = "50px";
    elem.style.top = "100px";
    moveElement("message",200,100,10);
}

addLoadEvent(positionMessage);
想要实现的效果是文本移动
但实际上positiMessage成功调用
但未出现文本移动效果;
并且浏览器报错[Web浏览器] "Uncaught SyntaxError: Unexpected number" (1)

阅读 1.4k
1 个回答

JSBIN

你这个代码有很大的问题,没有考虑方向什么的


修改了一个地方

clipboard.png
你自己比对一下


补充:

clipboard.png
这个地方理应会将其拼接成一个 "moveElement('message',200,100,10)",如果你把这个单引号去除掉,那么拼接出来就会变成"moveElement(message,200,100,10)",然后setTimeout调用的时候就会变成
new Function("moveElement(message,200,100,10)")(),这个时候message只是个没意义的字符,也不是全局变量,于是程序就出错了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题