繁体   English   中英

HTML5点击会同时发送到两个按钮

[英]HTML5 click is sent to two buttons simultaneously

这与我先前的问题有关,该问题与单击按钮时移动简笔画有关。
新的问题是将单击同时发送给两个按钮。

左右按钮一切正常。 顶部和底部拧紧。

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不起作用,因为它是这样编码的。 仅当vertical具有非零值时, Top才能工作。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM