2013-04-09 53 views
2

我正在使用JavaScript JSON對象。我不知道這是寫JSON對象的正確方法: -回到Javascript對象並顯示在表

var address={ 
    details:{ 
     "martin":[{"full_name":"James Martin"},{"address":"Florida"},{"phone":"897657834"}], 
     "luthar":[{"full_name":"Luther king"},{"address":"Boston"},{"phone":"9856568789"}], 
     "jonson":[{"full_name":"Jonson vierra"},{"address":"New york"},{"phone":"98654567887"}] 
    } 
} 

現在,我要顯示錶中的每個人的每一個元素。我可以通過編寫手動執行此操作:

<table border=1> 
<tr> 
<td><script>document.write(address.details.martin[0].full_name)</script></td> 
<td><script>document.write(address.details.martin[1].address)</script></td> 
<td><script>document.write(address.details.martin[2].phone)</script></td> 
</tr> 
</table> 

喜歡本作的所有3人,但我想用一個循環來抓住每個人的全部細節。 如何使用循環輕鬆完成此操作?

+0

您可能要考慮一下使用類似[knockout](http://knockoutjs.com/)這樣的綁定庫。 – 2013-04-09 14:12:28

+1

實際上我現在不想使用任何類型的庫。因爲我是javascirpt的新手,所以我需要從根本上知道。 :) – 2013-04-09 14:14:42

+0

不夠公平,但使用庫和學習JavaScript不是相互排斥的。也不要陷入像這樣內聯JavaScript的壞習慣。最後,你所擁有的實際上並不是有效的JSON,因爲'details'沒有用引號括起來,但不清楚爲什麼你想要JSON而不是隻是一個對象字面值。 – 2013-04-09 14:37:11

回答

2

我會做這些方針的東西:

for (var i in address.details) 
{ 
    document.write('<tr><td>' + address.details[i][0]['full_name'] + '</td><td>' + address.details[i][1]['address'] + '</td><td>' + address.details[i][2]['phone'] + '</td></tr>'); 
} 

跟進此代碼應輸出與數據表中,您需要:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title>An XHTML 1.0 Strict standard template</title> 
    <meta http-equiv="content-type" content="text/html;charset=utf-8" /> 
</head> 

<body> 
    <script> 
    var address={ 
     details:{ 
     "martin":[{"full_name":"James Martin"},{"address":"Florida"},{"phone":"897657834"}], 
     "luthar":[{"full_name":"Luther king"},{"address":"Boston"},{"phone":"9856568789"}], 
     "jonson":[{"full_name":"Jonson vierra"},{"address":"New york"},{"phone":"98654567887"}] 
     } 
    } 
    </script> 
    <table border=1> 
    <script> 
     for (var i in address.details) 
     { 
      document.write('<tr><td>' + address.details[i][0]['full_name'] + '</td><td>' + address.details[i][1]['address'] + '</td><td>' + address.details[i][2]['phone'] + '</td></tr>'); 
     } 
    </script> 
    </table> 
</body> 

+0

我相信'address.details [i]'是一個數組 – dm03514 2013-04-09 14:17:31

+0

它是不工作的,但是'details'元素是數組? – 2013-04-09 14:23:02

+0

對不起,衝的代碼,總是不好,我現在編輯它。應該工作。 – alvinc 2013-04-09 14:25:05

1
for (var personName in address.details) { 
    if (address.details.hasOwnProperty(personName)) { 
    address.details[personName] 
    // [{"full_name":"James Martin"},{"address":"Florida"},{"phone":"897657834"}] 
    // you could now loop through the personName's array 
    } 
} 

您是否完全控制了數據結構?這似乎有點複雜?

+0

實際上我不想在一個人的全部數據(包括'括號或''。我只需要像martins full_name'詹姆斯馬丁的數據在一個表中 – 2013-04-09 14:28:40