2016-06-12 17 views
-1

私の子オブジェクトに の子ローが実装されたデータ型があります。(name1、name2、nameX ... name20という名前の20個の列があります) htmlで子行を作成していますどこ私はすべての名前をループにしたいし、それが/ nullで空でない場合、それをdiv要素を追加番号を含むJavaScriptのループアクセスオブジェクト名

function format_details (d) { 

     var $part1 = ' some HTML code'; 
     var $part2; 

     for (var i = 1; i < 21; i++) { 

      var $name = "d.name" + i.toString(); 
      var $compare=this[$name]; 
      if ($compare.length != 0) {$part2 += '<div class="desc_wrapper"><div class="desc">'+ this[$name] + '</div></div>';} 
      } 
     var $part3 = 'some HTML again'; 


var $result = $part1.concat($part2,$part3); 

return $result; 

私はそれが私が20times同じ名前を持っていますが、しかし、もちろん作品d.name1使用している場合は、オブジェクト名を作成した場合この{$ name}を使用するか、またはd.name [i]またはd.name + iを使用する場合jsonからのデータにアクセスできない

私はどのようにすればよいでしょうか最後にnumberという名前のデータをp?

+0

現在のコードで何が問題になっていますか?あなたがそれを実行するとどうなりますか?エラーメッセージが表示されますか?予想外の結果ですか? – smarx

+0

ネストされたプロパティの場合、 'object ['prop1.prop2']'のようなことはできません。これは '{" prop1.prop2 ": 'Someval"} ' – charlietfl

+0

のように見えるオブジェクトを指します。var $ name = d [" name "+ i]; – JonSG

答えて

2

ダイナミックな名前のオブジェクトプロパティにアクセスするには、角括弧を使用して名前を文字列として指定します。以下は同等:私はあなたが何をしようとしてわからない

var $name = d["name" + i]; 

:これで

var $name = "d.name" + i.toString(); 

:あなたのコード内ので

d.name1 
d["name1"]  // note the quotes, the property name is a string 
d["n" + "a" + "m" + "e" + "1"] 
d["name" + i] // assuming i is 1 
var n = "name" + i; 
d[n] 
d[someFunc()] // assuming someFunc() returns the string "name1" 

は、この行を置き換えますthis[$name]と - これは動的なプロパティ名を取得しようと試みただけの場合は削除して$nameを直接使用することができます(私の提案された変更後)$nameはオブジェクトからの値を保持します。

+0

これを要求していると思います作品!ありがとう –

関連する問題