无法使用JS创建表

时间:2015-05-23 17:50:24

标签: javascript dom

这是一个错误:

  

未捕获的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);
}

3 个答案:

答案 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);
}

按照惯例,你用小写(类名除外)写一个函数名的第一个字母。

Demo

答案 2 :(得分:0)

它返回了我将脚本链接在体内而不是在头部)