好吧,在这里,我继续尝试学习这种非常好的语言...因此,我以前有一个非常丑陋的代码,里面充满了“ 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行上出现“ Exception 8”错误

但是如果我只是做一个

alert(arraypro[0].Name);


它输出的恰好是正确的词。 arraypro[product].Name中的值怎么可能由alert检索(如果您传递'product'的值)而不是appendChild

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

PD:信息所在的arraypro已被声明为全局值,以备不时之需。

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

最佳答案

appendChild()需要一个DOM-Node,您传递的是我相信的字符串。

您可以将其更改为:

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

09-27 10:13