Javascript 如何使用jQuery显示具有随机ID的div而不重复它?
我有一个函数来选择一个从0到45的随机数,然后我用特定的ID显示div。它工作正常,但它重复一个数字 有人能建议它不要重复数字吗 我这样调用函数onclickJavascript 如何使用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
$(".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`