我的桌子生成7个蓝色的随机框,还有5个其他黄色的随机框,但我的问题是有时候是一个盒子" Id"可以有2或3倍相同的随机值,我们只看到5个蓝色框,而不是预期的7个。我该如何解决?如果盒子是蓝色的,它不能是第二次,如果是蓝色,它不能是黄色等。
function bluecolor() {
$(".boutton2").click(function() {
for (i = 0; i < 7; i++) {
var rn = Math.floor(Math.random() * 28) + 1;
$("#" + rn).addClass("blue");
}
for (a = 0; a < 5; a++) {
var randome = Math.floor(Math.random() * 28) + 1;
$("#" + randome).addClass("yellow");
}
}
}
答案 0 :(得分:2)
我在你的代码中看到你似乎有29个盒子,而不是12个盒子,从1到29编号。我知道你想要7个蓝色和5个黄色。正确?
您可以制作一个包含28个ID(数字1到29)的数组,它们和#34; shuffle&#34;它,asign class blue到第7个,黄色到下一个5 ......(如果需要的话,删除其他的类)。
答案 1 :(得分:0)
您可以使用$("#" + randome).length > 0
来验证是否已添加了ID,或者$(".myClass").length > 0
如果您想使用此类,则可以使用{。}}。
您也可以使用数组并验证数字,只选择不同的数字。
var numbers = [];
while(numbers.length < 5){
var number = Math.floor(Math.random() * 28) + 1;
if(numbers.indexOf(number) == -1){
numbers.push(number);
}
}
console.log(numbers);
&#13;
您可以多次使用功能:
function getRandomNotEqualNumbers(quantity, max, min){
var numbers = [];
while(numbers.length < quantity){
var number = Math.floor(Math.random() * max) + min;
if(numbers.indexOf(number) == -1){
numbers.push(number);
}
}
return numbers;
}
var blues = getRandomNotEqualNumbers(7, 28, 1);
var yellows = getRandomNotEqualNumbers(5, 28, 1);
console.log(blues);
console.log(yellows);
//if you want unique between colors
var myNumbers = getRandomNotEqualNumbers(12, 28, 1);
blues = [];
yellows = [];
for(var i = 0; i < myNumbers.length; i++){
if(i < 7)
blues[i] = myNumbers[i];
else
yellows[i-7] = myNumbers[i];
}
console.log(blues);
console.log(yellows);
&#13;
答案 2 :(得分:0)
为避免重复数字,请为您生成的每个数字生成一个arraylist。