1
var Animals = {
    "Europe": { "weasel.jpg": "squeak", "cow.jpg": "moo"},
    "Africa": { "lion.jpg": "roar", "gazelle.jpg": "bark"},         
};

function region(a){
    var b = "Animals."+a;
    for(var index in b) {
        var target = document.getElementById('div1');
        var newnode = document.createElement('img');
        newnode.src = index;
        target.appendChild(newnode)
    }
}

関連するHTML

<li onclick="europe('Europe')">Europe</li>

目標:ヨーロッパをクリックして、ヨーロッパ<li>という単語を私の地域関数に渡し、そこで連結して動物を生成します。ヨーロッパ

for(var index in Animals.Europe)これは、ループを使用して上部のオブジェクト構造内の配列を識別するためです。なぜAnimals.Europeを生成する連結は、私がこれを入力した場合と同じように扱われないのですか?

さらに、さまざまな動物の画像ソースと説明を格納するために配列を使用したことがわかります。私の限られたコーディング知識を使用して、これは私が考えることができたすべてでした。HTMLで作成するために画像/説明データを保存する簡単な方法はありますか?

4

3 に答える 3

1

「動物」+ aは単なる文字列値です。たとえば、「Animals.Europe」は、Animals.Europeと同じものではありません。最初の行をに変更するとvar b = Animals[a];、すべて設定されているはずです。

編集:そしてelclanrsが指摘したように、それはでregion('Europe')はなく、であるべきeurope('Europe')です。

于 2013-01-06T06:03:30.537 に答える
1

Animals.Europe を生成する連結が、これを入力した場合と同じように扱われないのはなぜですか?

この場合、変数bは単なる文字列 ("Animals.Europe") であり、他の文字列 (文字のリスト) と同様に扱われます。これは、それをループしようとすると ( for(index in b))、文字の単純なリストをループすることになることを意味します。

代わりにできることは、オブジェクトのプロパティにアクセスするための角括弧表記を使用することです。これは、代わりに を記述して、動物からvar b = Animals[a]属性を取得できることを意味します。aこの方法でオブジェクトを操作する方法の詳細については、この MDN ページを参照してください。

于 2013-01-06T06:05:17.933 に答える