我写了这个函数,它显示了数组中的一个随机项,然后尝试添加一点,它不会选择相同的东西两次,但现在文本甚至都没有显示。
编辑感谢Pointy和Jonas W发现了这一点。现在工作var lyrics = function(){
var olditem = document.getElementById("space").innerHTML
var item = space[Math.floor(Math.random() * space.length)];
while (olditem === item) {
item = space[Math.floor(Math.random() * space.length)];
}
if (olditem !== item) {
document.getElementById("space").innerHTML = item;
}};
答案 0 :(得分:1)
为什么不这样做
function lyrics(){
var item = Math.floor(Math.random() * space.length);
document.getElementById("space").innerHTML=space.splice(item,1)[0];
}
从数组中删除项目,因此无法再次使用...
答案 1 :(得分:0)
当它退出while循环时,已经存在隐含的else
。
所以我相信你的else
导致它无法打印。
如果你删除它,它应该没问题。
var lyrics = function(){
var olditem = document.getElementById("space").innerHTML
var item = space[Math.floor(Math.random() * space.length)];
while (olditem === item) {
var item = space[Math.floor(Math.random() * space.length)];
}
document.getElementById("space").innerHTML = item;
};
答案 2 :(得分:0)
var lyrics = function() {
var olditem = document.getElementById("space").innerHTML;
var item = space[Math.floor(Math.random() * space.length)];
while (olditem === item) {
item = space[Math.floor(Math.random() * space.length)];
}
document.getElementById("space").innerHTML = item;
};
答案 3 :(得分:0)
您可以随机播放阵列,然后按顺序拍摄物品 从这里采取的随机播放功能:How can I shuffle an array?
var data = [
'one',
'two',
'three',
'four',
'five'
]
function shuffle(a) {
var j, x, i;
for (i = a.length; i; i--) {
j = Math.floor(Math.random() * i);
x = a[i - 1];
a[i - 1] = a[j];
a[j] = x;
}
}
var pos = 0;
shuffle(data);
var lyrics = function(){
pos++;
if (pos == data.length) {
pos = 0;
shuffle(data);
}
return data[pos];
}
console.log(lyrics());
console.log(lyrics());
console.log(lyrics());