“无法调用方法'appendchild'为null”......错误......为什么?

时间:2012-03-13 03:12:49

标签: javascript ajax

这是我的代码......

    var main = document.getElementById("section");  //gets node for main window
        var para1 = document.createElement("p");     //creates paragraph     node
        var para2 = document.createElement("p");    // creates another paragraph node

        var req = request.responseXML;   //gets xml data

        var nodeList = req.getElementsByTagName("line");   //gets all nodes with line as tag
        var nodeArray = new Array();   //holds only lines that are part of code

        para1.appendChild(document.createTextNode(req.getElementsByTagName("description")[0].childNodes[0].nodeValue));  //creates text node to put inside paragraph node
        para2.appendChild(document.createElement("table"));   //creates a table tag and puts inside para2

        for(var i=0; i<nodeList.length; i++)
        {
            if(nodeList[i].getAttribute("st") == "no")
            {
                document.getElementById("table").appendChild(document.createElement("tr"));  //creates a table row for each line participating in quiz
                //document.getElementById("tr").appendChild(document.createElement("td"));   //creates table data for the row (only one)dd
                //nodeArray.push(nodeList[i].childNodes[0].nodeValue);  //adds to array the lines participating in quiz         
                //document.getElementById("td").appendChild(createTextNode(nodeList[i],childNodes[0].nodeValue));
            }
        }


        main.appendChild(para1);   //add paragraph to the main div
        main.appendChild(para2);    //adds 2nd paragraph to main div
    }

所以我在if语句中评论了其他所有内容,但我仍然收到此错误...如果我之前已经创建了表标记,为什么它被认为是null?

4 个答案:

答案 0 :(得分:3)

将您的代码更改为:

var table = para2.appendChild(document.createElement("table"));
var tbody = table.appendChild(document.createElement('tbody'));

现在将行添加到tbody。其他答案会告诉您getElementById错误。对您的问题的评论告诉您为什么要创建TBODY元素。

答案 1 :(得分:0)

您没有为表格分配“table”的ID,因此您无法通过getElementById(“table”)找到它。

将适当的id分配给表或使用getElementsByTagName。

答案 2 :(得分:0)

para2.appendChild(document.createElement("table"));

这将创建一个名为“table”的元素,而不是id“table”

在if块中,使用getElementsByName

访问它

答案 3 :(得分:0)

您有多次调用appendChild,因此很难确认错误发生在'table'行。但是,您说的是,您正在调用document.getElementById,而不是document.getElementsByTagName,这意味着您需要创建一个ID为table的表:

<table id="table">
...
</table>