这是一个错误:
未捕获的TypeError:无法读取属性" appendChild'为null
代码示例:
function MakeTable(Matrix){
var newElem = document.createElement('table');
newElem.border = "1px";
for(var j = 0; j < Matrix.length; j++) {
var newRow = newElem.insertRow(j);
for(var n = 0; n < Matrix[j].length; n++) {
var newCell = newRow.insertCell(n);
newCell.innerText = Matrix[j][n];
}
}
document.getElementById('table1').appendChild(newElem);
}
答案 0 :(得分:1)
只要DOM中有一个带有table1
ID的元素,并且只要脚本在加载该元素之前没有运行,它就会起作用。
function MakeTable(Matrix){
var newElem = document.createElement('table');
newElem.border = "1px";
for(var j = 0; j < Matrix.length; j++) {
var newRow = newElem.insertRow(j);
for(var n = 0; n < Matrix[j].length; n++) {
var newCell = newRow.insertCell(n);
newCell.textContent = Matrix[j][n];
}
}
document.getElementById('table1').appendChild(newElem);
}
MakeTable([["this", "is"], ["my", "table"]]);
<div id=table1></div>
我还将.innerText
更改为.textContent
,因为这是符合标准的设置文字的方式。
答案 1 :(得分:1)
如果您创建了一个元素,则必须附加它。这里:
document.body.appendChild(table)
更改最后一行:
function MakeTable(Matrix){
var newElem = document.createElement('table');
newElem.border = "1px";
for(var j = 0; j < Matrix.length; j++) {
var newRow = newElem.insertRow(j);
for(var n = 0; n < Matrix[j].length; n++) {
var newCell = newRow.insertCell(n);
newCell.innerText = Matrix[j][n];
}
}
document.body.appendChild(newElem);
}
按照惯例,你用小写(类名除外)写一个函数名的第一个字母。
答案 2 :(得分:0)
它返回了我将脚本链接在体内而不是在头部)