【发布时间】:2016-09-06 18:56:56
【问题描述】:
嘿,所以我进行了搜索,可能(??)对此有一些答案,但它们都在我的脑海中。基本上我正在玩基于此Dynamically generated table - using an array to fill in TD values 的理论表 ;但我想使用对象而不仅仅是数组:
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 Uncaught TypeError: Cannot read property '1' of undefined”
即使property[i] 返回的字符串与我键入的显式属性相同。有人可以指出我可能出错的地方吗?
提前致谢。我在粘贴 html 时也遇到了问题,因此它基本上在 id 为“samtable”的 div 中运行 addTable 函数。 js 在 head 作为 table.js 之前加载。再次感谢
【问题讨论】:
标签: javascript arrays multidimensional-array javascript-objects