我有这个问题的第一部分,我可以从数组中选择一个随机元素
function setImage()
{
var images = ['anemone.gif', 'ball.gif', 'crab.gif', 'fish2.gif', 'gull.gif', 'jellyfish.gif', 'moon.gif', 'sail.gif', 'shell.gif', 'snail.gif', 'sun.gif', 'sunnies.gif', 'whale.gif'];
var slots = [document.getElementById('slot0'), document.getElementById('slot1'), document.getElementById('slot2')];
document.getElementById('slot0').src = images[Math.floor(Math.random() * images.length)];
document.getElementById('slot1').src = images[Math.floor(Math.random() * images.length)];
document.getElementById('slot2').src = images[Math.floor(Math.random() * images.length)];
alert(images.indexOf(document.getElementById('slot2')));
}
然而第二行没有给我正确的元素索引,我不知道怎么找到它?
答案 0 :(得分:1)
您是否有理由不仅将随机索引设置为变量而只是使用它?
function setImage()
{
var images = ['anemone.gif', 'ball.gif', 'crab.gif', 'fish2.gif', 'gull.gif', 'jellyfish.gif', 'moon.gif', 'sail.gif', 'shell.gif', 'snail.gif', 'sun.gif','sunnies.gif', 'whale.gif'];
var slots = [document.getElementById('slot0'), document.getElementById('slot1'), document.getElementById('slot2')];
var rnd0 = Math.floor(Math.random() * images.length);
var rnd1 = Math.floor(Math.random() * images.length);
var rnd2 = Math.floor(Math.random() * images.length);
document.getElementById('slot0').src = images[rnd0];
document.getElementById('slot1').src = images[rnd1];
document.getElementById('slot2').src = images[rnd2];
alert(rnd2);
}
如果有,你应该尝试提醒图像的来源,并确保它的格式与图像数组匹配。
如果你仍然遇到问题,请设置一个包含html和JS的jsfiddle,这样我们就可以看到发生了什么。
答案 1 :(得分:1)
document.getElementById('slot2')
会给你节点(在这种情况下为img
)。因此,您无法在包含src
值的数组中找到它。
document.getElementById('slot2').src
会为您提供完整路径(例如http://....../file.ext
),而不仅仅是文件名。
使用attributes属性。
document.getElementById('slot2').attributes["src"]
答案 2 :(得分:0)
你的意思是:
alert(images.indexOf(document.getElementById('slot2').src));