2017-05-28 6 views
1

私はこのように、私のウェブサイトのプロジェクトでのJSONファイルを持っている:javascriptを使用してjsonオブジェクトからデータ行を動的に追加しますか?

[ 
    { 
"id": "1", 
"name": "ramesh", 
"phone": "12345", 
"salary": "50000" 
    }, 

    { 
"id": "2", 
"name": "suresh", 
"phone": "123456", 
"salary": "60000" 
    } 
] 

ここでは、サンプルデータである、それは4つの列がありますが、私は私が取得する私のJSONデータが、持っていることを知りませんいくつの列の数。私はこのjsonデータから動的なhtmlテーブルを作成しようとしています。これは私が今書き込み持つコードです:私は、データ行を挿入しようとすると、上記のコード

<script> 
    $(document).ready(function() { 
     var jsonitems = []; 
     $.getJSON("json.json", function (data) { 
      var totalColumns = Object.keys(data[0]).length; 
      var columnNames = []; 
      columnNames = Object.keys(data[0]); 

      //Create a HTML Table element. 
      var table = document.createElement("TABLE"); 
      table.border = "1"; 

      //Add the header row. 
      var row = table.insertRow(-1); 
      for (var i = 0; i < totalColumns; i++) { 
       var headerCell = document.createElement("TH"); 
       headerCell.innerHTML = columnNames[i]; 
       row.appendChild(headerCell); 
      } 

が働いている、私は、以下の問題に直面しています動作していないもののためのコードです:

  //Add the data rows. 
      //for (var i = 1; i < data.length; i++) { 
      // row = table.insertRow(-1); 
      // for (var j = 0; j < totalColumns; j++) { 
      //  var cell = row.insertCell(-1); 
      //  cell.innerHTML = customers[i][j]; 
      // } 
      //} 

      var dvTable = document.getElementById("dvTable"); 
      dvTable.innerHTML = ""; 
      dvTable.appendChild(table); 
     }); 
    }); 
</script> 

私を助けてください。私が解釈することができるものに基づいて おかげ

+1

? '$("

").append(" ").append("​​")'これはAngularと簡単なngRepeatで簡単に実行できます。 jQueryの代わりに行く –

+0

あなたの提案に感謝@JeremyThille、私は角度jsでそれを見てみましょう。 – Mogli

+0

@JeremyThille私は、このリンクhttps://spring.io/guides/gs/consuming-rest-angularjs/を次のですが、彼らはJSONレスポンスの列名を知っているように、このリンクには、HTMLのテーブルを作成している、どのような方法があります列の数を取得し、動的に名前を取得するには? – Mogli

答えて

0

あなたはセルデータにアクセスしている方法が間違っています。例えば、最初のオブジェクトのアクセスidに、あなたの代わりにあなたのコードはdata[0][0]を行おうと、data[0]["id"]を行うにしました。あなたのコードの作業例:あなたがあなたのテーブルを構築するためのjQueryを使用していないのはなぜ

var data = [{ 
 
    "id": "1", 
 
    "name": "ramesh", 
 
    "phone": "12345", 
 
    "salary": "50000" 
 
    }, 
 

 
    { 
 
    "id": "2", 
 
    "name": "suresh", 
 
    "phone": "123456", 
 
    "salary": "60000" 
 
    } 
 
]; 
 
var totalColumns = Object.keys(data[0]).length; 
 
var columnNames = []; 
 
columnNames = Object.keys(data[0]); 
 

 
//Create a HTML Table element. 
 
var table = document.createElement("TABLE"); 
 
table.border = "1"; 
 

 
//Add the header row. 
 
var row = table.insertRow(-1); 
 
for (var i = 0; i < totalColumns; i++) { 
 
    var headerCell = document.createElement("TH"); 
 
    headerCell.innerHTML = columnNames[i]; 
 
    row.appendChild(headerCell); 
 
} 
 

 
// Add the data rows. 
 
for (var i = 0; i < data.length; i++) { 
 
    row = table.insertRow(-1); 
 
    columnNames.forEach(function(columnName) { 
 
    var cell = row.insertCell(-1); 
 
    cell.innerHTML = data[i][columnName]; 
 
    }); 
 
} 
 

 
var dvTable = document.getElementById("dvTable"); 
 
dvTable.innerHTML = ""; 
 
dvTable.appendChild(table);
<div id="dvTable"></div>

1

は、あなただけのこの操作を行うことができます。配列内の各オブジェクトにアクセスし、キーを使用して値をマップします。

しかし、あなたがあなたのコード例として書かれてきましたし、あなたの提供するデータが異なるようです。

let data = [ 
 
    { 
 
"id": "1", 
 
"name": "ramesh", 
 
"phone": "12345", 
 
"salary": "50000" 
 
    }, 
 

 
    { 
 
"id": "2", 
 
"name": "suresh", 
 
"phone": "123456", 
 
"salary": "60000" 
 
    } 
 
]; 
 

 
var table = document.getElementById("table"); 
 

 
for (let item of data) { 
 
    row = table.insertRow(-1); 
 
    for (let key in item) { 
 
     var cell = row.insertCell(-1); 
 
     cell.innerHTML = item[key]; 
 
    } 
 
}
<table id="table"> 
 
</table>

関連する問題