我正在尝试显示一个随机图像,一旦显示该图像,它将被移动到另一个数组,如果新的随机图像在第二个数组中,那么它将重复该函数以获得新图像。我的代码如下
var correctAnswer
var image
var images = new Array(10)
images[0] = "Bridleway.png"
images[1] = "Bus.png"
images[2] = "Footpath.png"
images[3] = "House.png"
images[4] = "Park.png"
images[5] = "Pillar.png"
images[6] = "Road.png"
images[7] = "Train.png"
images[8] = "Worship.png"
images[9] = "Youth.png"
//selecting a random image
var usedImages = new Array()
function getRandomImage() {
image = images[Math.floor(Math.random() * 10)];
if (image in usedImages)
getRandomImage();
else
return image;
}
function displayRandomImage() {
correctAnswer = document.getElementById("randomImage");
correctAnswer.src = getRandomImage();
usedImages.push(correctAnswer.src)
答案 0 :(得分:0)
变化:
if (image in usedImages)
为:
if (usedImages.indexOf(image) != -1)
x in y
测试x
是否是对象y
的属性名称之一,它不会搜索数组的值。
y.indexOf(x)
返回数组x
中y
的位置。您不能将它用作布尔值,因为它会为第一个元素(这是假的)返回0
,而在找不到元素时返回-1
(这是真的)。这就是为什么你必须将结果与-1
进行比较。
另一个问题是,当您检索correctAnswer.src
时,它将包含图片的完整网址,而不仅仅是文件名,因此它与images
中的内容不匹配。你应该自己推文件名。
function displayRandomImage() {
var correctAnswer = document.getElementById("randomImage");
var image = getRandomImage();
correctAnswer.src = image;
usedImages.push(image);
}