87,907
社区成员
发帖
与我相关
我的任务
分享
{"code":"0","msg":"Success","data":[{"id":1,"cId":1,"aId":2,"price":3,"crt":"2015-10-25 23:07:36","upt":"2016-02-02 11:50:37"},{"id":2,"cId":3,"aId":4,"price":3,"crt":"2015-10-25 23:07:36","upt":"2016-02-02 11:50:37"}]}
这是我找的一个原生js数组转表格栗子
但是我不是很清楚怎么把我的url中的data数组提取进栗子中的testArray中
json的语法有点生疏 看了有些jQuery的方法我还不是很能理解 所以还是想用原生js提取json中的数据
希望可以得到解决
<script type="text/javascript">
var testArray = [ {
"RRYID" : "039",
"公共部分" : "22.0440",
"设备管理" : "0",
"班组管理" : "0",
"运行管理" : "-0.20",
"安全管理" : "-0.10"
}, {
"RRYID" : "586",
"公共部分" : "33.2670",
"设备管理" : "0",
"班组管理" : "0",
"运行管理" : "-1.50",
"安全管理" : "-0.20"
}, {
"RRYID" : "429",
"公共部分" : "10.7290",
"设备管理" : "0",
"班组管理" : "0",
"运行管理" : "-0.20",
"安全管理" : "0"
}];
var headArray = [];
function appendTable() {
for ( var i in testArray[0]) {
headArray[headArray.length] = i;
}
for (var tableNo = 0; tableNo < testArray.length; tableNo++) {
var table = document.createElement("table");
var thead = document.createElement("tr");
for (var count = 0; count < headArray.length; count++) {
var td = document.createElement("td");
td.innerHTML = headArray[count];
thead.appendChild(td);
}
table.appendChild(thead);
var tbody = document.createElement("tr");
for (var headCount = 0; headCount < headArray.length; headCount++) {
var cell = document.createElement("td");
cell.innerHTML = testArray[tableNo][headArray[headCount]];
tbody.appendChild(cell);
}
table.appendChild(tbody);
document.body.appendChild(table);
}
}
虚心求教for ( var i in testArray[0]) {
headArray[headArray.length] = i;
}
这个循环看不懂有什么作用;还就是对td talbe tbody th这些使用innerHTML是无效的。
<meta charset="utf-8">
<table id="table">
</table>
<script type=text/javascript>
var testArray = [ {
RRYID : "039",
公共部分 : "22.0440",
设备管理 : "0",
班组管理 : "0",
运行管理 : "-0.20",
安全管理 : "-0.10"
}, {
RRYID : "586",
公共部分 : "33.2670",
设备管理 : "0",
班组管理 : "0",
运行管理 : "-1.50",
安全管理 : "-0.20"
}, {
RRYID : "429",
公共部分 : "10.7290",
设备管理 : "0",
班组管理 : "0",
运行管理 : "-0.20",
安全管理 : "0"
}];
function appendTable() {
var doc = document;
var table = doc.getElementById("table"),
thead = doc.createElement("thead"),
theadtr = doc.createElement("tr"),
tbody = doc.createElement('tbody');
thead.appendChild(theadtr);
for(var i in testArray[0]){
var td = doc.createElement('td');
td.appendChild(doc.createTextNode(i))
theadtr.appendChild(td);
}
table.appendChild(thead);
table.appendChild(tbody);
for (var i = 0, l = testArray.length; i < l; i++) {
var tr = doc.createElement('tr');
for(var j in testArray[i]){
var td = doc.createElement('td');
td.appendChild(doc.createTextNode(testArray[i][j]))
tr.appendChild(td);
}
tbody.appendChild(tr);
}
}
appendTable();
</script>
json字面量初始化的时候,属性名不能加引号; 用原生 js遍历json不是最佳方法,一般用jq each,for in能不用就尽量不用,如果在对象上增加了原型,会遍历出来,和数据导致冲突,多看看犀牛书吧。