我知道我可以使用以下代码删除vanilla Javascript中的行:
var table = document.getElementById('table');
function deleteRow () {
table.deleteRow(1);
};

table { background: #ccc; width: 100%; }
table thead { background: #333; color: #fff; }
table tbody { background: magenta; color: #fff; }

<button onclick="deleteRow()">Delete Row</button>
<table id="table">
<thead>
<tr>
<td>foo</td>
<td>bar</td>
</tr>
</thead>
<tbody>
<tr>
<td>lorem</td>
<td>ipsum</td>
</tr>
</tbody>
<tbody>
<tr>
<td>lorem</td>
<td>ipsum</td>
</tr>
</tbody>
</table>
&#13;
但是这段代码留下了一个空的tbody标签。 JS有删除thead和tfoot元素的方法,但它似乎缺少deleteTbody
个元素。
我应该如何仅使用纯javascript删除tbody
及其所有内容?请不要jQuery!
答案 0 :(得分:5)
尝试使用:
var tbl = document.getElementById("table"); // Get the table
tbl.removeChild(tbl.getElementsByTagName("tbody")[0]); // Remove first instance of body
答案 1 :(得分:2)
使用querySelectorAll()
遍历所有TBODY
元素,然后删除没有子元素的元素:
var table = document.getElementById('table');
function deleteRow() {
table.deleteRow(1);
var tb = document.querySelectorAll('tbody');
for (var i = 0; i < tb.length; i++) {
if (tb[i].children.length === 0) {
tb[i].parentNode.removeChild(tb[i]);
}
}
};
table {
background: #ccc;
width: 100%;
}
table thead {
background: #333;
color: #fff;
}
table tbody {
background: magenta;
color: #fff;
}
<button onclick="deleteRow()">Delete Row</button>
<table id="table">
<thead>
<tr>
<td>foo</td>
<td>bar</td>
</tr>
</thead>
<tbody>
<tr>
<td>lorem</td>
<td>ipsum</td>
</tr>
</tbody>
<tbody>
<tr>
<td>lorem</td>
<td>ipsum</td>
</tr>
</tbody>
</table>
答案 2 :(得分:1)
如果要删除tbody
标记,可以选择行本身而不是表格,然后使用removeChild
函数。
var table = document.getElementById('table');
var row = document.getElementsByTagName('tbody')[0];
function deleteRow () {
row.parentNode.removeChild(row);
};
答案 3 :(得分:0)
没有deleteTbody
,但有removeChild
:
var parent = document.getElementById("parent-id");
var child = document.getElementById("child-id");
parent.removeChild(child);