为了账号安全,请及时绑定邮箱和手机立即绑定

js练习中的困扰

js练习中的困扰

郎朗坤 2019-03-28 22:14:08
通过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 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

JSBIN

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


修改了一个地方

https://img1.sycdn.imooc.com//5cb2a42d00010df907950071.jpg

你自己比对一下


补充:

https://img1.sycdn.imooc.com//5cb2a43000019f7807310055.jpg

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


查看完整回答
反对 回复 2019-04-14
  • 1 回答
  • 0 关注
  • 393 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号