1

好吧,在这里我继续,尝试学习这种非常好的语言......所以我之前有一个非常丑陋的代码,里面充满了'document.write()'和更丑陋的东西,现在我正在将它转换成一个非常好的符合标准的代码代码,我喜欢它!但是我发现了一个我看不到逻辑的问题。它是这样的:

在 html 文件中,我有这个:

<body onload="generatetable(0)">

在 .js 文件中我有这个:

function generatetable(product) {    
    var tbinfo = document.createElement("table");  //table
    var tbbody = document.createElement("tbody");  //tbody
    var row = document.createElement("tr");     // creates row
    for (var i = 0; i < 4; i++) {               // creates 4 cells
        var cell = document.createElement("td");
        }

    var tname = arraypro[product].Name;
    cell.appendChild(tname);

(我不粘贴表格的其余部分,因为它似乎工作正常)

运行时,我var tname = arraypro[product].Name在行上得到“异常 8”错误

但如果我只做一个

alert(arraypro[0].Name);

它准确地输出它应该输出的东西,非常正确的词。怎么可能 in 的值arraypro[product].Name可以被 an 检索alert(如果你传递 'product' 的值)而不是appendChild?

我仍然不太习惯编程的逻辑,但我尝试...

PD:arraypro信息所在的 . 已被声明为全局值,可以访问所有内容,以防万一知道。

非常感谢您在这里的任何输入。

4

1 回答 1

5

appendChild()需要一个 DOM 节点,我相信你正在传递一个字符串。

您可以将其更改为:

var tname = arraypro[product].Name;
cell.appendChild(document.createTextNode(tname));
于 2012-11-06T17:14:02.830 回答