来自 JSON 对象的 Javascript 表
Javascript Table from JSON Object
我创建了一个简单的函数来从json对象返回表。我确信我的代码可以改进,以便第一行不需要为空白,并想知道是否有人可以帮助解决这个问题。
我的函数不需要jQuery,我更喜欢使用本机javascript来实现此实现。
<!DOCTYPE html>
<html>
<head>
<title>JSON Table</title>
<script>
function JSONtable(j,r){
// requirement: first record should be blank
var v = [];
var k = [];
var iv = [];
var ik = [];
var iiv = [];
var iik = [];
var t = '';
var f = 0;
var fi = 0;
for (k in j) {
if (k==r){
t = '<table name="'+k+'">';
v = j[k];
for (ik in j[k]) {
t = t+'<tr>';
for (iik in j[k][ik]) {
if (f==0){
t = t+'<th>'+iik+'</th>';
}else{
t = t+'<td>'+j[k][ik][iik]+'</td>';
}
fi++;
}
f++;
t = t+'</tr>';
}
t = t+'</table>';
}
}
return t;
}
</script>
</head>
<body>
<script>
var j = {"employees":[{"firstName":"-blank-", "lastName":"-blank-", "link":"-blank-"},{"firstName":"John", "lastName":"Doe", "link":"<a href='"#'">Link</a>"},{"firstName":"Anna", "lastName":"Smith", "link":"<a href='"#'">Link</a>"},{"firstName":"Peter", "lastName":"Jones", "link":"<a href='"#'">Link</a>"}]};
document.write(JSONtable(j,'employees'));
</script>
</body>
</html>
结果
<table name="employees">
<tbody>
<tr>
<th>firstName</th>
<th>lastName</th>
<th>link</th>
</tr>
<tr>
<td>John</td>
<td>Doe</td>
<td><a href="#">Link</a></td>
</tr>
<tr>
<td>Anna</td>
<td>Smith</td>
<td><a href="#">Link</a></td>
</tr>
<tr>
<td>Peter</td>
<td>Jones</td>
<td><a href="#">Link</a></td>
</tr>
</tbody>
</table>
不需要空白记录的新代码
<!DOCTYPE html>
<html>
<head>
<title>JSON Table</title>
<script>
function JSONtable(j,r){
var v = [];
var k = [];
var iv = [];
var ik = [];
var iiv = [];
var iik = [];
var t = '';
var f = 0;
for (k in j) {
if (k==r){
t = '<table name="'+k+'">';
t = t+'<tr>';
for (i of Object.keys(j[k][0])) {
t = t+'<th>'+i+'</th>';
}
t = t+'</tr>';
v = j[k];
for (ik in j[k]) {
t = t+'<tr>';
for (iik in j[k][ik]) {
t = t+'<td>'+j[k][ik][iik]+'</td>';
}
f++;
t = t+'</tr>';
}
t = t+'</table>';
}
}
return t;
}
</script>
</head>
<body>
<script>
var j = {"employees":[{"firstName":"John", "lastName":"Doe", "link":"<a href='"#'">Link</a>"},{"firstName":"Anna", "lastName":"Smith", "link":"<a href='"#'">Link</a>"},{"firstName":"Peter", "lastName":"Jones", "link":"<a href='"#'">Link</a>"}]};
document.write(JSONtable(j,'employees'));
</script>
</body>
</html>
使用 Object.keys
获取数组键的名称并首先构建标头。然后循环浏览列表的其余部分。
<title>JSON Table</title>
<script>
function JSONtable(j,r){
// requirement: first record should be blank
var v = [];
var k = Object.keys(j)[0];
var iv = [];
var ik = [];
var iiv = [];
var iik = [];
var t = '';
var f = 0;
var fi = 0;
if (k === r) {
t = '<table name="'+k+'">';
t = t+'<tr>';
for (i of Object.keys(j[k][0])) {
t = t+'<th>'+i+'</th>';
}
t = t+'</tr>';
for (k in j) {
v = j[k];
for (ik in j[k]) {
t = t+'<tr>';
for (iik in j[k][ik]) {
t = t+'<td>'+j[k][ik][iik]+'</td>';
fi++;
}
f++;
t = t+'</tr>';
}
}
t = t+'</table>';
}
return t;
}
</script>
<body>
<script>
var j = {"employees":[{"firstName":"John", "lastName":"Doe", "link":"<a href='"#'">Link</a>"},{"firstName":"Anna", "lastName":"Smith", "link":"<a href='"#'">Link</a>"},{"firstName":"Peter", "lastName":"Jones", "link":"<a href='"#'">Link</a>"}]};
document.write(JSONtable(j,'employees'));
</script>
相关文章:
- Chrome开发工具(如何知道我在调用哪个javascript对象)
- 循环遍历以数组为值的Javascript对象
- 从ajax请求中获取javascript对象
- 如何从对象的原型方法访问JavaScript对象属性
- 将XML转换为普通的旧JavaScript对象
- 通过引用传递JavaScript对象
- javascript对象操作:根据指定条件选择属性
- Javascript对象类在单击时打开窗口进行颜色选择,并在更改时替换对象背景颜色
- 如何在异步函数中使用javascript对象
- 临时Javascript对象
- 如何在ASP中为用户控件添加Javascript对象网
- 使用数组向下搜索Javascript对象
- Rails将JavaScript对象存储到Model的有效方式
- JavaScript对象不是从原型链继承的
- 如何创建具有默认值的JavaScript对象字段?(AngularJS模型相关)
- SetInterval在javascript对象中表现怪异
- Javascript 对象和 this 关键字
- 如何在不知道关键字的情况下访问javascript对象值
- 在 JavaScript 对象中设置要使用的运算符的属性
- 如何搜索JavaScript对象并更改值