2

ねえ、私は検索をしましたが、これにいくつかの回答がありましたが、それらはすべて私の頭の上にあります。基本的に私はこれに基づいて理論的なテーブルで遊んでいますDynamically generated table - using an array to fill in TD values ;しかし、私はちょうど配列ではなくオブジェクトを使用したい:例えば私は1つのキーを呼び出す場合javascriptのオブジェクトのキーとしての配列

function addTable() { 
var myTableDiv = document.getElementById("samtable"); 
var table = document.createElement('TABLE'); 
var tableBody = document.createElement('TBODY'); 

table.border = '1'; 
table.appendChild(tableBody); 

var user = new Array(); 

user[0] = { Name: "Sam", Address: "good times lane", Phone: "023423423432" } 
user[1] = { Name: "Harold", Address: "imaginary ave", Phone: "023447568788" } 
user[2] = { Name: "Ronnie", Address: "the pentagon", Phone: "076457574574" } 
user[3] = { Name: "Pablo", Address: "antarctica", Phone: "045757432" } 
user[4] = { Name: "Shaka", Address: "walmart", Phone: "02345774572" } 
user[5] = { Name: "Xianwei", Address: "easy st", Phone: "0242443243432" } 

var property = new Array(); 
property[0] = "Name"; 
property[1] = "Address"; 
property[2] = "Phone"; 

var tr = document.createElement('TR'); 
tableBody.appendChild(tr); 
for (i = 0; i < user.length; i++) { 
    var th = document.createElement('TH') 
    th.width = '75'; 
    th.appendChild(document.createTextNode(user[i].Name)); 
    tr.appendChild(th); 
} 

for (i = 1; i < property.length; i++) { 
    var tr = document.createElement('TR'); 
    for (j = 0; j < user.length; j++) { 
     var td = document.createElement('TD') 
     td.appendChild(document.createTextNode(user[j].property[i])); 
     tr.appendChild(td); 
    } 
    tableBody.appendChild(tr); 
} 

myTableDiv.appendChild(table); 
} 

は、私はテーブルを生成することができますように明示的な:これはただのすべての行アドレスを作る

td.appendChild(document.createTextNode(user[j].Address)); 

。私は次の行が電話であるようにそれをよりダイナミックにしようとしています。 しかし、私はしようとした場合:

td.appendChild(document.createTextNode(user[j].property[i])); 

私は、エラーメッセージが出ます:"table.js:43キャッチされない例外TypeError:プロパティを読み取ることができません '1' 未定義のを"

property[i]がどの文字列を返すにもかかわらず、明示的なプロパティIと同じです。誰かが私が間違っているかもしれない箇所を指摘してもらえますか?

ありがとうございました。私はhtmlを貼り付けることができないので、基本的にid "samtable"のdivでaddTable関数を実行しています。 jsはheadの前にtable.jsとしてロードされます。ありがとうございました

答えて

2

ここであなたのループはちょっと間違っているようですが、ここでオブジェクトのキーを取得すると文字列として返されます。オブジェクトのプロパティを取得するには、角括弧[object] [key]オブジェクト[keyVariable]

for (i = 1; i < property.length; i++) { 
    var tr = document.createElement('TR'); 
    for (j = 0; j < user.length; j++) { 
     var td = document.createElement('TD') 
     td.appendChild(document.createTextNode(user[j][property[i]]); // This change will do it for you 
     tr.appendChild(td); 
    } 
    tableBody.appendChild(tr); 
} 
+1

すごく早くて、うまくいきました。それは完全にはっきりとわかりました。私はもっと複雑なものだと思っていましたが、それは単に構文エラーでした。あなたの助けをありがとう! –

+0

Cheeers !!!幸いです:) –

+0

学習の次の段階は、これらのオブジェクトをmySQLデータベースに接続し、テーブルを動的に移植できるかどうかを確認することです。私は私の将来の多くのGoogle検索を予知しています:) –

関連する問題