如何在不使用insertRow的情况下使用JavaScript将表行添加到HTML中的现有表中?

时间:2019-10-05 17:38:52

标签: javascript html arrays html-table

我有一个分配,如果我将0数组传递给函数,则只需要向现有表中添加一个行。但是,当我通过分配检查器运行代码时,它总是说我在进行两行。结果,我一直未能通过单元测试。

该作业还指出,我不允许使用insertCell和/或insertRow,因为这会导致自动分级器出现问题。

我对这个问题的解决方法是,如果数组的总和等于0,则获取ID为distributionTable的现有表,并向其添加一行。我使用浏览器检查工具进行调试,以确保HTML中存在一行。

下面是我在JavaScript中创建的函数:

function setTableContent(userInput) {
    let gradeArray = parseScores(userInput);
    let distArray = buildDistributionArray(gradeArray);
    let sum = 0

    for (let i = 0; i < distArray.length; i++) {
        sum = sum + distArray[i];
    }

    if (sum <= 0) {
        var table = document.getElementById("distributionTable")
        row = table.appendChild(document.createElement("tr"));
    } 
}

下面是提供的HTML页面,将从JavaScript对其进行修改:

<!DOCTYPE html>
<html>
    <head>
        <style>
            .bar0 { vertical-align: bottom; background-color: #00C000; }
            .bar1 { vertical‐align: bottom; background-color: #309000; }
            .bar2 { vertical‐align: bottom; background-color: #606000; }
            .bar3 { vertical‐align: bottom; background-color: #903000; }
            .bar4 { vertical‐align: bottom; background-color: #C00000; }
            td { vertical-align: bottom }
        </style>
        <script src="index.js"></script>
    </head>
    <body onload="bodyLoaded()">
        <table style="border: 2px solid black" id="distributionTable">
        </table>
    </body>
</html>

下面是运行代码后浏览器中的HTML元素: HTML Inspect Code

这是单元测试的输出: Unit Test Result

如果您还有其他问题或建议,请告诉我。谢谢!

1 个答案:

答案 0 :(得分:1)

自动分级机似乎很混乱。

我敢打赌,评分员正在检查table.childNodes.length而不是table.children.length

它应该只检查子节点,而不是childNodes。

编辑: 只需完成分配任务(他们会固定平地机),您就可以执行以下操作

table.innerHTML = "";
table.appendChild(document.createElement('tr'));