我想使用js在exsiting表中添加一行,但是我收到一个错误:document.getElementById()为null,这是我的代码:
<!DOCTYPE html>
<html>
<head>
<title>use js to create one row</title>
</head>
<body >
<tr id="table">
<td>row 1</td>
</tr>
<script>
window.onload = function(){
var td = document.createElement("td");
td.innerHTML = "add row";
var tr = document.getElementById("table");
tr.appendChild(rows);
}
</script>
</body>
</html>
答案 0 :(得分:2)
由于tr
在表格之外无效,因此浏览器基本上完全忽略了tr
元素,只是将文本row 1
直接放在body
中,这就是为什么getElementById
没有返回元素;它在解析HTML时从未由浏览器创建。
将tr
放入table
(理想情况下放在tbody
中):
<table>
<tbody id="tbody">
<tr>
<td>row 1</td>
</tr>
</tbody>
</table>
并附加到tbody
,确保创建一行(tr
)以及td
,因为您明显的目标是添加一行:
var td = document.createElement("td");
td.innerHTML = "add row";
var tr = document.createElement("tr");
tr.appendChild(td);
document.getElementById("tbody").appendChild(tr);
在load
上使用window
事件也几乎没用。相反,只需将脚本放在HTML的最末端,就在结束</body>
标记之前。
实例:
<table>
<tbody id="tbody">
<tr>
<td>row 1</td>
</tr>
</tbody>
</table>
<script>
(function() {
var td = document.createElement("td");
td.innerHTML = "add row";
var tr = document.createElement("tr");
tr.appendChild(td);
document.getElementById("tbody").appendChild(tr);
})();
</script>