2

这与我之前关于在按钮单击时移动简笔画有关的问题有关。
新问题是同时向两个按钮发送点击。

左右按钮一切正常。上下都搞砸了。

HTML

<!DOCTYPE html>
<html>

<style>
    #stage{
        width: 100px;
        height: 100px;
        position: relative;
        border-style: dashed;
        border-color: gray;
        border-width: medium;
    }

    #actor{
        width: 13px;
        height: 15px;
        position: absolute;
        left: 0;
        top: 0;
        background-image: url("E:/Website Projects/man.PNG");

        -webkit-transition: all 2s ease-out 0s;
        -moz-transition: all 2s ease-out 0s;
        transition: all 2s ease-out 0s;
    }


</style>

<body>
    <div id="stage">
        <div id="actor"></div>
    </div>

    <div>
        <button class="control" id="top">TOP</button> <br>
        <button class="control" id="left">LEFT</button> <button class="control" id="right">RIGHT</button> <br>
        <button class="control" id="down">DOWN</button>
    </div>
</body>

<script>
    var vertical = 0;
    var horizontal = 0;
    var shift = 5;

    var top = document.querySelector("#top");
    var left = document.querySelector("#left");
    var right = document.querySelector("#right");
    var down = document.querySelector("#down");

    top.addEventListener("click",moveTop,false);
    left.addEventListener("click",moveLeft,false);
    right.addEventListener("click",moveRight,false);
    down.addEventListener("click",moveDown,false);

    function moveTop(){
        var actor = document.querySelector("#actor");
        if(vertical>0){
            --vertical;
            actor.style.top = shift*vertical + "px";
            console.log("TOP " + "VERTICAL: " + vertical);
        }
    }

    function moveDown(){
        var actor = document.querySelector("#actor");
        if(vertical<17){
            ++vertical;
            actor.style.top = shift*vertical + "px";
            console.log("DOWN " + "VERTICAL: " + vertical);
        }
    }

    function moveRight(){
        var actor = document.querySelector("#actor");
        if(horizontal<17){
            ++horizontal;
            actor.style.left = shift*horizontal + "px";
            console.log("RIGHT " + "HORIZONTAL: " + horizontal);
        }
    }

    function moveLeft(){
        var actor = document.querySelector("#actor");
        if(horizontal>0){
            --horizontal;
            actor.style.left = shift*horizontal + "px";
            console.log("LEFT " + "HORIZONTAL: " + horizontal);
        }
    }

</script>

</html>  

控制台日志

DOWN VERTICAL: 1 floating%20man.html:71
TOP VERTICAL: 0 floating%20man.html:62    

那就是点击的日志downTop行不通,因为这就是它的编码方式。Top仅当vertical具有非零值时才有效。

为什么会这样?如何解决?

4

1 回答 1

1

The identifier top is already taken in web browsers, and refers to the topmost window on a frameset (or the current window, if there are no frames). On Chrome at least, you can't overwrite it. You'll have to choose a new variable name for your button reference.

Working version: http://jsbin.com/uzanom/1/edit

于 2013-03-23T15:44:39.807 回答