javascript - 运行一次的函数 里面的语句为什么重复执行
黄舟
黄舟 2017-04-11 12:08:22
[JavaScript讨论组]

部分代码如下:

function yourTurn() {
    console.log("123");
    yourTurnArr = [];
    $(".cp").css("cursor", "pointer");
    $(".cp").mousedown(function() {
        switch (this.id) {
            case "red":
                $(this).css("background", "#ff4c4c");
                break;
            case "blue":
                $(this).css("background", "#1c8cff");
                break;
            case "yellow":
                $(this).css("background", "#fed93f");
                break;
            case "green":
                $(this).css("background", "#13ff7c");
                break;
        };
    })
    $(".cp").mouseup(function() {
        switch (this.id) {
            case "red":
                $(this).css("background", "#9F0F17");
                break;
            case "blue":
                $(this).css("background", "#094A8F");
                break;
            case "yellow":
                $(this).css("background", "#CCA707");
                break;
            case "green":
                $(this).css("background", "#00A74A");
                break;
        }
      yourTurnArr.push(this.id);
        
    })

}

全部代码


查找bug的好方法可以推荐一下也是极好的

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全部回复(1)
伊谢尔伦

看了一下楼主的代码。

$("#start-mark").click(function() {
    //检查开关是否已经打开
    if (state == "off") {
        return;
    }
    // if (count > 1) {
    //     count = 0;
    // }
    stateReady();
    setTimeout("yourTurn()", (randomColorArr.length + 1) * 1200);

    setTimeout("check()", (randomColorArr.length + 1) * 2000);
})

之所以出现多个事件,并不是因为上述代码问题。而是逻辑上有问题。
#start-mark触发点击事件时会延迟执行yourTurn(),当执行一个yourTurn()就为.cp节点添加mousedown/mouseup事件。如果多次点击。yourTurn()也会执行多次,就会添加多个事件。

要解决这个问题,楼主就要先判断对应节点的状态,如果存在对应的事件,不要再继续添加事件了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号