控制台显示未捕获的SyntaxError:意外的标识符

时间:2019-06-25 15:36:19

标签: javascript html

我修改了函数moveElement并将其形式参数从elementID更改为element。我想将DOM对象直接从函数positionMessage传递给函数moveElement。 Chrome一直显示“未捕获的语法”错误,我不知道哪里出了问题。如果您能给我一些帮助或指点,我将不胜感激。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</script>
    <script type="text/javascript" src="scripts/positionMessage.js"></script>
    <script type="text/javascript" src="scripts/moveElement.js"></script>
</head>
<body>
    <p id="message">Whee!</p>
</body>
</html>

moveElement.js:

function moveElement(element,finx,finy,interval){
    var xpos = parseInt(element.style.left); 
    var ypos = parseInt(element.style.top);
    if(xpos == finx && ypos == finy) return true;
    if(xpos > finx) xpos--;
    if(xpos < finx) xpos++;
    if(ypos > finy) ypos--;
    if(ypos < finy) ypos++;
    element.style.left = xpos+"px";
    element.style.top = ypos+"px";
    var repeat = "moveElement("+element+","+finx+","+finy+","+interval+")";
    var movement = setTimeout(repeat,interval);
}

positionMessage.js:

window.onload = positionMessage;
function positionMessage(){
    var elem = document.getElementById("message");
    elem.style.position = "absolute";
    elem.style.left = "50px";
    elem.style.top = "100px";
    moveElement(elem,200,100,10);
}

控制台显示此错误:

  

未捕获的SyntaxError:意外的标识符

1 个答案:

答案 0 :(得分:1)

因此,我认为问题来自使用setTimeout的eval而不是创建函数

function moveElement(element,finx,finy,interval){
    var xpos = parseInt(element.style.left); 
    var ypos = parseInt(element.style.top);
    if(xpos == finx && ypos == finy) return true;
    if(xpos > finx) xpos--;
    if(xpos < finx) xpos++;
    if(ypos > finy) ypos--;
    if(ypos < finy) ypos++;
    element.style.left = xpos+"px";
    element.style.top = ypos+"px";
    var movement = setTimeout(function () {
        moveElement(element, finx, finy, interval);
    }, interval);

}

但是您也可以将附加参数传递给setTimeout,这些参数将传递给函数。

function moveElement(element,finx,finy,interval){
    var xpos = parseInt(element.style.left); 
    var ypos = parseInt(element.style.top);
    if(xpos == finx && ypos == finy) return true;
    if(xpos > finx) xpos--;
    if(xpos < finx) xpos++;
    if(ypos > finy) ypos--;
    if(ypos < finy) ypos++;
    element.style.left = xpos+"px";
    element.style.top = ypos+"px";
    var movement = setTimeout(moveElement, interval, element, finx, finy, interval);
}