我在Chrome浏览器控制台中复制了以下代码。该代码应该动态生成表,并用数组中的内容填充它。
认为我的代码看起来有效,我一直在下面收到错误消息:
uck offult typeError:无法读取未定义的属性"长度" 在:15:31
在我的代码下面找到:
var array = [["A1", "B1", "C1"],
["A2", "B2", "C2"],
["A3", "B3", "C3"],
["A4", "B4", "C4"],
["A5", "B5", "C5"],
["A6", "B6", "C6"],
["A7", "B7", "C7"]],
table = document.getElementById("table");
for(var i = 0; i < array.length; i++);
{
//=== Adds a new Row
var newRow = table.insertRow(table.length);
for(var j = 0; j < array[i].length; j++);
{
//=== Adds a new cell
var cell = newRow.InsertCell(j) ;
//=== Adds value to the cell
cell.innerHTML = array[i][j];
}
}
当我在错误消息中单击: 15:31 时,这表明第二个for(var j = 0; j < array[i].length; j++);
循环内的array[i].length
是问题。
我对这些类型的错误消息的个人经历是,受试者中的变量通常不在全球定义。但是,我的代码表明array
变量是全局定义的。
有人可以解释为什么我全球定义的array
未被认为已经定义并给我解决方案吗?
看来您犯了几个错误。
-
您已经在两个语句之后立即将分号放在。
for(var i = 0; i&lt; values.length; i (;
for(var j = 0; j&lt; values [i] .length; j (;
-
您已将 insertCell 函数误认为 insertCell 。
var cell = newrow.insertcell(j(;
删除分号并更改功能名称,并且应该起作用。
观看您的分号。请参阅:
var array = [1, 2, 3, 4];
for(var i = 0; i < array.length; i++)
{
console.log(i);
}
当您在for
句子的末尾放一个半列时,您实际上正在创建一个没有身体的for
,并且是一个被阻塞的范围:
var array = [1, 2, 3, 4];
for(var i = 0; i < array.length; i++); // it will just increment i until i >= array.length
{
console.log(i); // 4
// if you array[i] will get undefined, that's what you getting
// undefined.length will throw an error
}