2013-04-09 62 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