Javascript 如何使用jQuery显示具有随机ID的div而不重复它?

Javascript 如何使用jQuery显示具有随机ID的div而不重复它?,javascript,jquery,Javascript,Jquery,我有一个函数来选择一个从0到45的随机数,然后我用特定的ID显示div。它工作正常,但它重复一个数字 有人能建议它不要重复数字吗 我这样调用函数onclick $(".skip").click(function () { scared++; $("#counter").html("My current count is: " + dared); var d = 50; /*$(".question").addClass("hideMe"); $(th

我有一个函数来选择一个从0到45的随机数,然后我用特定的ID显示div。它工作正常,但它重复一个数字

有人能建议它不要重复数字吗

我这样调用函数onclick

$(".skip").click(function () {

    scared++;
    $("#counter").html("My current count is: " + dared);
    var d = 50;


    /*$(".question").addClass("hideMe");
    $(this).parents("div").next("div").removeClass("hideMe");*/
    var r = Math.round(Math.random() * 44) + 1;
    var newquestion = "q" + r;
    $('.active').removeClass("active");
    $("#" + newquestion).addClass("active");


    if (scared > 44) {
        $('.main').fadeOut('fast');

        $('.logo').switchClass("logo", "share");
        $('.progress').css("display", "none");
        $('.share-game').css("display", "block");
        $('.hero').css("right", "-240px");
        $('#score-total').html(score + '');
    } else {

    }

    $('.red-line').append('<div id="children' + (d++) + '" class="red"></div>');

    return false;
});

你可以看到我做了什么

var usedNumbers = [];
var randomNumbers = [];
$(function() {

    //Getting 20 random numbers
    for (i = 0; i < 20; i++) {
        randomNumbers.push(getRandomNumber());
    }
    console.log(randomNumbers);

    function getRandomNumber() {
        var hasInArray = true;
        do {
            var r = Math.round(Math.random() * 44) + 1;
            if (usedNumbers.indexOf(r) === -1) {
                usedNumbers.push(r);
                hasInArray = false;
                return r;
            }
        } while (hasInArray === true);

    }
});

警告:不要将随机数的数量设置得超过您想要的数量,因为这将导致无限循环

使用数组捕获使用过的数字,然后在每次单击时检查该数组,如果找到该数组,则生成一个新数字。当数组已满时,它会重置回空数组

var savedNumbers = [];

function getRandom() {
  if (savedNumbers.length === 45) {
    savedNumbers = [];
  }
  var r = Math.round(Math.random() * 44) + 1;
  if (savedNumbers.indexOf(r) > -1) {
    getRandom();
  } else {
    savedNumbers.push(r);
    return r;
  }
}

将使用过的随机数添加到数组中,检查该数组中是否存在此随机数,并在不循环的情况下执行此操作。第3行的dared来自何处?您是否希望该随机数不会背靠背重复?或者让那个随机数再也不用了?从字里行间看,听起来你很想创建和排列。我有一个有45个问题的测验,我需要把每个问题显示一次,但不要重复任何人,我敢说的是他们每次按“点击”时我给出的分数,如果用户pres skeep我需要在运行45个问题之前不重复地显示next div asweel,希望这个helpgetRandom函数我需要能够运行45次查看演示。每次单击按钮时都会运行getRandom,这是您想要执行的操作,不是吗?如果savedNumbers.indexOfr>-1{getRandom;}这一行再次运行函数,但在再次运行all函数之前不会显示div。它会重复数字Yes,因为我忘了将随机数添加到usedNumbers数组中。检查我编辑的代码。我加了一句:“usedNumbers.pushr`