javascript - 如果 div 单击多次,变量会创建多个输入?

标签 javascript jquery

我无法弄清楚这一点。发生的情况是,当我单击 playerMove() 中的 div 时,它应该使 var clickedId 成为该 id。如果我单击一个 div,然后单击另一个 div,它会起作用,但如果我单击同一个 div 两次,变量就会加倍并加一。例如:

第一次点击 = 3 第二次点击 = 4 这很好用

第一次点击 = 3 第二次点击 = 3 这会创建类似 var clickedId = 3 3 3 3

这是 fiddle jsfiddle.net/61cyw2s8

$(document).ready(function() {
    //Global Arrays
    var player = [];
    var comp = [];

    //function for RandomInt 1-4  
    function randomInt() {
        return Math.floor(Math.random() * (4 - 1 + 1) + 1);
    }

    //hover function
    function hover(value) {
        $("#" + value).addClass("hover");
        setTimeout(function() {
            $("#" + value).removeClass("hover");
        }, 500);
    };

    //Comp Move
    var hoverCount = 0

    function addCompMove() {
        comp.push(randomInt());
        compHover();

    }

    function compHover() {
        setTimeout(function() {
            console.log(hoverCount);
            hover(comp[hoverCount]);
            hoverCount++;
            if (hoverCount < comp.length) {
                compHover();
            }
        }, 1000)
        playerMove();
    };

    //Player Move 
    function playerMove() {
        $(".playbox").on("click", function() {
            var clickedId = parseInt(this.id);
            console.log(clickedId);
            player.push(clickedId);
            hover(clickedId);
            correctMove();
        })
    }
    //Testing
    function arrayEqual(arr1, arr2) {
        if (arr1.length !== arr2.length) {
            return false;
        }
        for (var i = arr1.length; i > -1; i--) {
            if (arr1[i] !== arr2[i])
                return false;
        }
        return true;
    };

    function correctMove() {
        if (arrayEqual(comp, player)) {
            hoverCount = 0;
            player.length = 0;
            addCompMove();
        } else {
            playerMove();
        }
    };
    //Start
    $("#start").bind("click", function() {
        addCompMove();
    });

});

最佳答案

检查数组是否重复 $.inArray

//Player Move 
function playerMove(){
  $(".playbox").on("click", function(){
    var clickedId = parseInt(this.id);
    console.log(clickedId);
    if ($.inArray(clickedId, player) == -1){
       player.push(clickedId);
    }
    hover(clickedId);
    correctMove();
  }) 
}

关于javascript - 如果 div 单击多次,变量会创建多个输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34198700/

相关文章:

javascript - 如何让 plupload 从队列中删除文件?

javascript - 选择多选器中所有未选中的框

javascript - jQuery 命名空间和使用 "this"

javascript - 使用 Javascript 动态更改 image_tag 文件名

javascript - 仅在加载图像/声音时执行功能,jQuery

javascript - 如何在纯 JavaScript(不是 Node.js)中生成一个范围内的随机 BigInt?

javascript - 无法在 js 中使用 DOM

javascript - 如何在父动画开始时触发 jquery 子函数

javascript - 如何对对象的所有属性调用函数?

javascript - 在复选框限制后显示消息(多个实例)