HTML5单击同时发送到两个按钮

时间:2013-03-23 15:12:15

标签: javascript html5 css3 css-transitions

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

左右按钮一切正常。上下拧紧。

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    

点击down即可登录。 Top将不起作用,因为它是如何编码的。 Top仅在vertical具有非零值时才有效。

为什么会这样?怎么解决?

1 个答案:

答案 0 :(得分:1)

标识符top已在Web浏览器中使用,并且引用框架集上的最顶层窗口(如果没有框架,则引用当前窗口)。至少在Chrome上,您无法覆盖它。您必须为按钮引用选择一个新的变量名称。

工作版本:http://jsbin.com/uzanom/1/edit