如何在JavaScript中删除子节点
How to remove children in JavaScript
下面的JQuery代码在JavaScript中是等价的:
$('div').children().remove();
我试着遵循,但它说长度没有定义:
var nodes = document.getElementsByTagName('div').childNodes;
for(var i=0; i< nodes.length; i++) {
nodes[i].remove();
}
小提琴
在纯JavaScript中跨浏览器删除元素的正确方法是:
element.parentNode.removeChild(element);
所以按照你的例子,解决方案是:
var nodes = document.getElementsByTagName('div');
for (var i = 0, len = nodes.length; i < len; i++) {
var node = nodes[i],
children = node.childNodes;
for (var j = children.length; j--;) {
node.removeChild(children[j]);
}
}
然而,删除所有子节点的更好选择是在while
循环中执行:
var nodes = document.getElementsByTagName('div');
for (var i = 0, len = nodes.length; i < len; i++) {
var node = nodes[i];
while (node.firstChild) {
node.removeChild(node.firstChild);
}
}
演示:http://jsfiddle.net/N6RM4/1/
检查document.getElementsByTagName('div')
返回NodeList
没有成员childNodes
要删除所有div的所有子节点,需要遍历这些节点。
这是一个工作示例
HTML<button id="adds" onclick="add()">add</button>
<button id="removes" onclick="del()">remove</button>
<form>
<div id="myList">
<div><input type="checkbox"></div>
</div>
</form>
JS
function del(){
var list=document.getElementById("myList");
if (list.childNodes.length > 2){
list.removeChild(list.childNodes[list.childNodes.length-1]);
}
}
function add(){
var par=document.createElement("div");
var chi = document.createElement('div');
chi.innerHTML = '<input type="checkbox"></input>';
par.appendChild(chi);
document.getElementById("myList").appendChild(par);
}
getElementsByTagName
返回一个元素列表,您必须指定索引(在您的示例中为[0])
var nodes = document.getElementsByTagName('div')[0].childNodes;
JSfiddle
相关文章:
- 删除HTML节点而不删除其子节点
- jQuery如何用1行来附加html和删除子节点
- 如何在JavaScript中删除子节点触发点击事件时的父节点
- Kendo TreeView-只向没有子节点的父节点添加删除图像图标
- 使用 JavaScript 从 XML 中删除子节点
- jQuery - 如何循环删除仅某些子节点
- 如何从 Javascript 对象中删除所有子节点
- 从 JSON 中删除子节点
- 如何在 jstree 中删除所选节点的子节点
- 从react中的父dom节点中删除子组件
- 可以't删除所有子节点
- DOM Javascript正在删除子节点
- 如何使用jquery删除树视图子节点
- 删除子节点错误
- 删除子节点
- 如何查找父节点和删除子节点
- 删除子节点后,我无法重新运行函数本身
- 简单的onclick无法删除子节点
- 如何在JavaScript中删除子节点
- Firebase——批量删除子节点