我有一些代码可以随机突出显示列表中的一个名称(这有效 - 请参阅 this fiddle ):
function pickRandom() {
var random = Math.floor(Math.random() * 6);
$('.stname').css('background','none').eq(random).css('background','yellow');
}
但我想确保相同的名字不会一遍又一遍地出现。所以我打算记住最后 3 个选择的索引作为黑名单:
var recentlyAsked = new Array();
function pickRandom() {
var random;
do {
random = Math.floor(Math.random() * 6);
} while ($.inArray(random,recentlyAsked));
recentlyAsked.push(random);
if (recentlyAsked.length >= 4) recentlyAsked.shift();
$('.stname').css('background','none').eq(random).css('background','yellow');
}
这不起作用;请参阅this fiddle 。 警告:它会导致浏览器挂起。
请问有什么建议吗?
最佳答案
do {
random = Math.floor(Math.random() * 6);
} while ($.inArray(random,recentlyAsked));
永远运行,因为当在数组中找不到项目时,inArray
返回 -1
,这是一个真值。 0
是唯一一个假值。您的数组最初是空的,因此什么也找不到。
修复它:
do {
random = Math.floor(Math.random() * 6);
} while ($.inArray(random,recentlyAsked) > -1);
当返回-1
(未找到)时,这将停止
关于javascript - 记住 jQuery 中的最后 n 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8196508/