2017-01-13 11 views
0

にそれらを印刷する(キー:値)さんとDOMに書き込みます。プロパティを持つオブジェクトの配列を反復し、私たちは、プロパティを持つオブジェクトのコレクションを介して実行しようとしているDOM

var productContent = { 
item1: { 
    description: "description 1", 
    price: 1, 
    URL: "something1.com", 
}, 
item2: { 
    description: "description 2", 
    price: 2, 
    URL: "something2.com", 
}, 

私たちは、次のようなコードのいくつかの異なる種類の、試してみた:何も動いていないようで

var productInfo; 
var insertProduct = document.getElementById("productList"); 

for (var i in productContent) { 
    console.log(productContent[i]); 
    productInfo += productContent[i]; 
} 

insertProduct.innerHTML = productInfo; 
を。どのようにこれにアプローチする上の任意の考え?私たちはコンソールに表示されたプロパティを取得することができましたが、あまり多くはありませんでした。

+2

なぜあなたは別のオブジェクトで、あなたのオブジェクトを格納していますか?あなたのユースケースでは、配列がより単純に見えます。 –

+0

どのような形式でデータを「domに書き込む」ようにしますか?テーブル?何らかの種類のリスト?必要な出力を作成するには、HTML要素を構築する必要があります。単にDOMにオブジェクトを出力することはできません。 – qxz

答えて

0
  1. あなたの最初のコードブロックに構文エラーがあります。 productContentオブジェクトに、中かっこの中かっこがありません:}
  2. また、代わりに専用のプロパティの間の最後のプロパティの後にコンマを持っています。

あなたはこれをデバッグするには、ブラウザの開発ツールでJSコンソールを使用する必要があります。

+0

もちろん、Javascriptコンソールを使用しています。しかし、それはポイントになっている、私は正確にこの仕事を持って書き込み方向にあるかどうかはわかりません。 申し訳ありません - 私のミス、私たちは中括弧が欠落していない私はちょうどそれが小さい – nashvilleCoder

0

あなたのスクリプトに多少の誤差を持っている、あなたは次でを開始することができます。

var htmlValue = ''; 

for (var productKey in productContent) { 
    var product = productContent[productKey]; 
    htmlValue += 'description: ' + product.description + '<br>'; 
    htmlValue += 'price: ' + product.price + '<br>'; 
    htmlValue += 'url: ' + product.URL + '<br><br>'; 
} 

insertProduct.innerHTML = htmlValue; 

エラー:

1.

for (var i in productContent) { 

これはただ強いの提案ですが、 keyのように、コンテキストに意味のあるものにiを変更する必要があります。オブジェクトのプロパティ変数の名前を正しく指定すると、コード内のエラーを特定するのに役立ちます。

productInfo += productContent[i] 

これは、オブジェクトの値を連結するための適切な方法ではありません。最初の反復は "undefined [object Object]"になります。

3.

insertProduct.innerHTML = productInfo; 

あなたもここで行うには何をしようとしていますか?オブジェクトに要素を入れることはできません。あなたはコードとして配置し、あなたが望む方法でフォーマットしなければなりません。

+0

は使用しないでください作るために他のオブジェクトを降り 'innerHTMLの+ =' – Oriol

+0

@Oriolその理由は何ですか? – qxz

+0

@qxz現在のコンテンツをシリアライズするため、文字列として連結して、すべてを再解析します。同じ作業を何度も繰り返すだけです。シリアライズすると、すべての内部データが失われます。 – Oriol

関連する問題