从数组中删除先前的值并使用剩余数据进行更新时出现问题。
例如,在代码JSFiddle中,我在阵列中有四个值:BMW,Nissan,Volvo和Saab。
var cars = ["Saab", "Volvo", "BMW" , "Nissan"];
shuffle(cars);
document.getElementById("demo").innerHTML = cars[0];
所以,一旦我“按一个按钮”它显示“宝马”或任何其他值,下次重新装载时应该只在其余值内随机化,即日产,沃尔沃和萨博。
var cars = ["Saab", "Volvo", **"BMW"** , "Nissan"];
直到所有结束,并显示“没有更多值显示”
答案 0 :(得分:0)
在按钮点击事件中尝试这样的事情......
function removeCard() {
var index = 0;
cars.splice(index, 1);
if (cars.length>0) {
document.getElementById("demo").innerHTML = cars[0];
} else {
document.getElementById("demo").innerHTML = "none left";
}
}
...点击活动......
document.getElementById("myButton").addEventListener("click", removeCar());
<强>更新强>:
var cars = ["Saab", "Volvo", "BMW", "Nissan"];
shuffle(cars);
document.getElementById("demo").innerHTML = cars[0];
document.getElementById("myButton").addEventListener("click", function() {
var index = 0;
cars.splice(index, 1);
if (cars.length>0) {
document.getElementById("demo").innerHTML = cars[0];
} else {
document.getElementById("demo").innerHTML = "none left";
}
});
有点精简和清洁。的 jsFiddle 强>
答案 1 :(得分:0)
function shuffle(array) {
return array.splice(Math.random() * array.length, 1).pop();
}
var cars = ["Saab", "Volvo", "BMW" , "Nissan"];
var car = shuffle(cars);
document.getElementById("demo").innerHTML = car;
另请注意,JSFiddle每次都在重新加载整个JS,即。每次重新加载cars
的初始化,因此每次运行时都会使用所有四个初始值刷新它。