我正在编写一个脚本,onload将向12个DIV中的任意4个添加类,然后从数组中删除DIV的ID。
我有一个包含所有12个DIV ID的阵列设置。
有时,当我重新加载页面时,有4个DIV具有该类,而有时只有3个DIV具有该类。
金达坚持说为什么会这样。我注释掉了从数组代码中删除,以查看是否是问题所在,但仍然是同样的问题。
这是我的代码:
//Randomize Which Shoes Are Positive And Negative
function randomizeShoes(){
allGroundShoes = new Array('ground_black_1','ground_black_2','ground_brown_1','ground_brown_2','ground_clown_1','ground_clown_2','ground_disco_1','ground_disco_2','ground_moccasins_1','ground_moccasins_2','ground_red_1','ground_red_2');
for(var i=0; i < 4; i++){
randomAllGroundShoes = allGroundShoes[Math.floor(Math.random() * allGroundShoes.length)];
$('#'+randomAllGroundShoes+'').addClass('shoeNegitive');
//randomShoeID = allGroundShoes.indexOf('randomAllGroundShoes');
//if(randomShoeID != -1){ allGroundShoes.splice(randomShoeID, 1); }
}
}
最佳答案
删除找到的元素时,将传递字符串文字而不是变量名称:
allGroundShoes.indexOf('randomAllGroundShoes');
由于没有元素
'randomAllGroundShoes'
,因此永远不会找到该元素,也不会从数组中删除任何元素。它应该是:
allGroundShoes.indexOf(randomAllGroundShoes);
但是,您做同一件事不止一次。您根本不需要检查
allGroundShoes.indexOf()
。您可以将随机数存储在变量中,然后再次引用它。但是,这甚至超出了您的需要。只需致电splice()
即可获得您的价值:randomAllGroundShoes = allGroundShoes.splice(
Math.floor(Math.random() * allGroundShoes.length), 1)[0];
$('#'+randomAllGroundShoes).addClass('shoeNegitive');
这样,您只需一步即可检索值并将其从数组中删除-无需其他查找。
jsfiddle.net/kRNTg