如何解决未捕获的类型错误:无法读取全局变量的未定义的属性'length'?



我在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未被认为已经定义并给我解决方案吗?

看来您犯了几个错误。

  1. 您已经在两个语句之后立即将分号放在。

    for(var i = 0; i&lt; values.length; i (;

    for(var j = 0; j&lt; values [i] .length; j (;

  2. 您已将 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
}

最新更新