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

ただし、2 行目では要素の正しいインデックスが表示されません。他の方法でそれを見つける方法がわかりません。

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').srchttp://....../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 に答える