这是我的代码......
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?
答案 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>