javascript - 无法向表中添加新行

标签 javascript html innerhtml appendchild

function load(){
    var row="<tr><td><select id=\"chooseclass\"><option value=\"math\">Math</option><option value=\"phys\">Physics</option><option value=\"lit\">Literature</option><option value=\"chem\">Chemistry</option><option value=\"bio\">Biology</option><option value=\"lang\">Language</option><option value=\"proj\">Project</option><option value=\"elec\">Elective</option></select></td><td><input id=\"choosemods\" type=\"text\" /></td><td><input id=\"choosegrade\" type=\"text\" /></td></tr>";
    var tablebody = document.getElementById("classestable");
    tablebody.innerHTML += "<tbody></tbody>";
    tablebody.getElementsByTagName("tbody").innerHTML = "";
    for(var i=0;i<15;i++){
        tablebody.getElementsByTagName("tbody").innerHTML += row;
    }
}

除了 row 的内容没有添加到 tbody 之外,上面的代码运行良好。

console.log 显示 row 的内容是有效的 html,并且控制台中没有错误。为什么没有添加?

最佳答案

getElementsByTagName 返回一个 NodeList,您可以使用节点的索引在第一个节点访问它

我会把代码改成下面这样

var innerRow = "";

for(var i=0;i<15;i++){
    innerRow += row;
}

tablebody.getElementsByTagName("tbody")[0].innerHTML = innerRow

这样你只扫描 DOM 一次而不是 15 次

关于javascript - 无法向表中添加新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13872123/

相关文章:

javascript - 使用免费的 jqGrid 4.15,无法过滤 false 的复选框

java - 是否有没有 JSON 限制的 JavaScript 对象文字的解析器/编码器?

javascript - Jquery 在点击时执行两个函数

javascript - Div 不会淡出 - Chrome 错误

javascript - innerHtml 表单数组

javascript - 无法设置 null 的属性 'innerHTML' 为什么我会收到此错误

javascript - UI Router - 如何在状态之间存储数据而不将它们显式传递给 $state.go(...)?

html - 是不是AppCache = Application Cache = Web Storage的LocalStorage?

javascript - 需要 JQuery 弹出/警报

javascript - Angular v2.4.7 [innerHtml] 和 [ngStyle] 在同一元素上