所以在我的页面上,我在一行中显示5个随机图像,当我重新加载页面时,图像会发生变化,这是有效的。但有时两个相同的图像是相同的,因为我对所有5个图像使用相同的数组,有没有办法防止这种情况发生?
谢谢!
这是我到目前为止的代码:
images = new Array();
images[0] = "<a href ='001.html'><img src='/images/001.jpg' width='125' height='125'></a>";
images[1] = "<a href ='002.html'><img src='/images/002.jpg' width='125' height='125'></a>";
images[2] = "<a href ='003.html'><img src='/images/003.jpg' width='125' height='125'></a>";
images[3] = "<a href ='004.html'><img src='/images/004.jpg' width='125' height='125'></a>";
images[4] = "<a href ='005.html'><img src='/images/005.jpg' width='125' height='125'></a>";
images[5] = "<a href ='006.html'><img src='/images/006.jpg' width='125' height='125'></a>";
images[6] = "<a href ='007.html'><img src='/images/007.jpg' width='125' height='125'></a>";
images[7] = "<a href ='008.html'><img src='/images/008.jpg' width='125' height='125'></a>";
images[8] = "<a href ='009.html'><img src='/images/009.jpg' width='125' height='125'></a>";
images[9] = "<a href ='010.html'><img src='/images/010.jpg' width='125' height='125'></a>";
images[10] = "<a href ='011.html'><img src='/images/011.jpg' width='125' height='125'></a>";
Number = Math.floor(Math.random()*images.length)
document.write(images[Number]);
答案 0 :(得分:0)
一种方法是确保只初始化数组一次,然后删除随机选择的元素,以便不能使用images.splice(Number, 1)
再次选择它。 (但不要将变量命名为Number
。)
var options = ['a', 'b', 'c', 'd', 'e'];
function selectItem() {
var n, item;
if (options.length === 0) { return; }
var n = Math.floor(Math.random() * options.length);
item = options[n];
options.splice(n, 1);
return item;
};
Here is a jsfiddle演示了基本技术。
您还可以使用封装此逻辑的函数:
function randomItemDispenser(items) {
return function () {
var n;
if (items.length !== 0) {
n = Math.floor(Math.random() * items.length);
return items.splice(n, 1)[0];
}
};
}
此函数接受一个数组作为参数并返回一个函数,该函数在被调用时将从该数组中删除并返回一个随机元素,直到该数组变为空:
var dispenser = randomItemDispenser(['a', 'b', 'c', 'd', 'e']);
var i;
while ((i = dispenser()) !== undefined) {
// Do something with i
}