2016-07-19 7 views
-2

forループを使用してオブジェクトの素材を繰り返し、HTMLのdivに素材を入力しようとしています。今は配列を受け入れるようにコードを設定しましたが、代わりにオブジェクトを使用したいと思います。Javascriptのforループを使用してHTML divにオブジェクトを入力する

var animals = [ 
    { 
    name:'Aye Aye', 
    description: 'blue', 
    img: 'http://cdnimg.in/wp-content/uploads/2015/06/335.jpg?cfaea8', 
    price:500 
    }, { 
    name:'Little Imp', 
    description:'yellow', 
    img:'http://cdnimg.in/wp-content/uploads/2015/06/334.jpg?cfaea8', 
    price:3000 
    }, { 
    name:'Long Nose Monkey', 
    decription:'grey', 
    img:'http://cdnimg.in/wp-content/uploads/2015/06/492.jpg?cfaea8', 
    price:5000 
    }, { 
    name:'Nicobar Bird', 
    decription:'purple', 
    img:'http://cdnimg.in/wp-content/uploads/2015/06/471.jpg?cfaea8', 
    price: 6 
    }, { 
    name:'Slow Loris', 
    decription: 'brown', 
    img: 'https://s-media-cache-ak0.pinimg.com/736x/49/09/8f/49098fbc3c9a37fb03034b45e89c5cd4.jpg', 
    price:90 
    }, { 
    name:'Tucan', 
    decription:'orange', 
    img: 'http://cdnimg.in/wp-content/uploads/2015/06/526.jpg?cfaea8', 
    price:100 
    }, { 
    name:'Fennec Fox' 
    decription:'yellow' 
    img:'http://cdnimg.in/wp-content/uploads/2015/06/526.jpg?cfaea8', 
    price:500 
    }, { 
    name:'Sugar Glider', 
    description: 'green', 
    img: 'https://pbs.twimg.com/media/CNd03WIUwAAqKHg.jpg:large', 
    price:1000000 
    } 
] 

function animal() { 
    // var animalName = ['Aye Aye', 

    var animalElement = document.getElementById("div0"); 

    for (i=0; i<animalName.length; i++) { 
    animalElement.innerHTML += '<h2>' + animalName[i]+'</h2>' +'<p>' + animalDescription[i] +'</p>' + '<p>' + animalPrice[i] +'</p>' + '<p>' + animalImage[i] + '</p>'; 
    }; 
}; 

animal(); 
+0

あなたのデータは類似のオブジェクトのセットです。つまり、アレイはそれを保持する明白な構造です。なぜそれをオブジェクトに変更したいのですか?あなたが何を求めているのか、何を問題にしているのかは明確ではありません。そして、*あなたのコードをうまくインデントしてください(http://www.danstools.com/javascript-beautify/)。 – nnnnnn

答えて

0

これは、あなたが現在持っているもののオフに基づいて、シンプルなソリューションです:

function generateAnimals() { 
    var animalElements = document.getElementById("div0"); 
    var html = ''; 

    for (i = 0; i < animals.length; i++) { 
     var animal = animals[i]; 

     html += '<h2>' + animal.name + '</h2>' 
      + '<p>' + animal.description + '</p>' 
      + '<p>' + animal.price + '</p>' 
      + '<p>' + animal.image + '</p>'; 
    } 

    animalElements.innerHTML += html; 
} 

generateAnimals(); 

は物事がより複雑になり始めたら、このような作成要素が乱雑得ることができることを警告されます。

+1

@DonavanMループ内でinnerHTMLを呼び出すと、複数のDOM再描画が発生します。結果をvarに保存し、ループの後で.innerHTMLを1回だけ実行したい場合があります。 –

+0

あなたはそうです。私は単純に多くのコード変更を必要としないソリューションを示していましたが、それを単一のinnerHTML呼び出しに変更する価値があると思います。良いキャッチ。今すぐ変更しよう。 – DonovanM

+0

あなたのコードは無効なHTMLを生成し、データがどのようにソースされているかによってはインジェクションにもオープンしているかもしれません。テキストデータをHTMLコンテキストに連結しないでください。 – Brad

関連する問題