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')];
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')));
}

但是第二行没有给我正确的元素索引,我不确定如何找到它?

4

3 回答 3

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,这样我们就可以看到发生了什么。

于 2012-10-07T15:45:14.863 回答
1

document.getElementById('slot2')会给你节点(img在这种情况下)。所以你不能在包含src值的数组中找到它。

document.getElementById('slot2').src会给你完整的路径(如http://....../file.ext),而不仅仅是文件名。

使用属性属性。

document.getElementById('slot2').attributes["src"]

于 2012-10-07T16:02:12.450 回答
0

你不是说:

alert(images.indexOf(document.getElementById('slot2').src));
于 2012-10-07T12:18:09.353 回答