2016-03-18 8 views
0

から構造化されたHTMLを生成:私はJSONオブジェクトの下からテーブルを生成するための最良の方法を考え出すしようとしているJSONオブジェクト

mytable=[ 
    {div:{ 
     nested:[ 
      {table:{ 
       nested:[ 
        {thead:{ 
         nested:[ 
          {tr:{ 
           nested:[ 
            {th:{}}, 
            {th:{}}, 
            {th:{}} 
           ]}} 
         ] 
        }}, 
        {tbody:{}} 
       ]}} 
     ]}} 
]; 

最終結果はHTML要素を生成するので、のような構造が:

<div> 
    <table> 
     <thead> 
      <tr> 
       <th></th> 
       <th></th> 
       <th></th> 
       <th></th> 
       <th></th> 
       <th></th> 
      </tr> 
     </thead> 
     <tbody></tbody> 
    </table> 
</div> 

私のロジックは、しかし、私は親に子要素バックバインドを行う方法を見つけ出すことはできませんので、要素を生成し、ループし続ける場合は、オブジェクトがプロパティnestedを持っているかどうかを確認することです同時に。

+0

あなたはいけないが、JSONの内側に構築されたテーブルを返す必要があります。ちょうどデータを返し、JavaScriptを使ってhtmlを構築してください。 –

+0

@VitorRigoniあなたの言っていることは知っていますが、私が探しているものではないことが分かります。私は開発をスピードアップするためにループを使ってよりダイナミックなアプローチを使いたいと思います。 –

+0

あなたの 'JSON'は無効です。ネストされた「th」に問題があります。プラス、何を試しましたか? – cl3m

答えて

1

この仕事ん:

var mytable = /* your json */ 

function toHTML(j, n) { 

    n = n || document.createDocumentFragment('div'); 
    for (var i = 0, o, l = j.length; i < l; i++) { 
     for (var tag in j[i]) { 
      o = document.createElement(tag); 
      n.appendChild(o); 
      'nested' in j[i][tag] && toHTML(j[i][tag].nested, o); 
     } 
    } 
    return n; 
} 
var res = toHTML(mytable); 

// now append it where needed 
document.body.appendChild(res); 
+0

あなたは獣です!私は、その簡略表記が大好きです。あなたがSFベイエリアに住んでいて、仕事が必要な場合は、私たちはあなたを雇うでしょう:) –

+1

thx @JordanDavis、現時点では私はスイスでは大丈夫です...決して言うことはありません! ;) – fedeghe

+0

ああ、あなたは完全な解決策を望んでいた。なぜあなたはただそう言っていませんでしたか? –

関連する問題