无法在 For 循环中读取 null 的 属性 of 'appendchild'

Cannot read property of 'appendchild' of null in a For-Loop

我有一个小型数据库,我从中检索数据并将其存储在 HTML table。

此 table 包含 3 列和 3 行。

我想要做的是通过 javascript 为每一行创建一个 div,然后在其中为 table 的该行中的每个单元格创建一个 div ](允许我在 CSS 中设置样式)。

我创建了多个 For 循环来执行此操作,我的问题是我创建的第二个 for 循环,它执行了一次并且我收到错误 "Cannot read property 'appendChild' of null"。我不确定为什么要这样做。任何帮助将不胜感激。

var getTable = document.getElementById('projectsTable');

var rowLength = getTable.rows.length;

for (i =0; i< rowLength; i++) {
    var divName = 'projects' + i;
    block = document.createElement('div');
    block.id = divName;
    document.getElementById('javascript').appendChild(block);


    var getCells = getTable.rows.item(i).cells;

    var cellLength = getCells.length;

    for (var j = 0; j < cellLength; j++) {
        var divName2 = 'projects' + j;
        var projectInfo = 'info' + j;
        info = document.createElement('div');
        info.id = projectInfo;
        document.getElementById(divName2).appendChild(info);


        var cellVal = getCells.item(j).innerHTML;
        var getDiv = document.getElementById(projectInfo);
        getDiv.innerHTML = cellVal;

    }

}

第一个 for 循环为整行创建 div 并将其附加到页面中已存在的 div,然后我在第二个 for 循环中得到错误。

您使用了很多不必要的变量和定义。例如 divName2 应该与 divName 相同,因此是多余的。 希望这个例子能帮到你。

<!DOCTYPE html>
<html>
    <head>
        <script>
            function loadTable(){
                var tT = document.getElementById('projectsTable'); //Source table
                var tJ = document.getElementById('javascript'); //New clone container
                if (tT && tJ){
                    for(var i=0, j=tT.rows.length;i<j;i++){
                        var tP = document.createElement('div'); //Our project div(:=tr)
                        tP.id = 'projects' + i.toString();

                        for(k=0, l=tT.rows.item(i).cells.length;k<l;k++){
                            var tI = document.createElement('div'); //Our info div(:=td)
                            tI.id = 'info' + k.toString();
                            tI.innerHTML = (i+1)*k;
                            tP.appendChild(tI); //We still have the correct project from above, so we just use it.
                        };

                        tJ.appendChild(tP); //Adding project to the dom
                    };
                };
            };
        </script>
    </head>

    <body onload = 'loadTable();'>
        <table id = 'projectsTable'>
            <tr><td>1</td><td>2</td><td>3</td></tr>
            <tr><td>4</td><td>5</td><td>6</td></tr>
        </table>

        <div id = 'javascript'></div>
    </body>
</html>