在javascript中循环子节点
这似乎不起作用。我做得对吗?我循环浏览孩子们并删除所有img\u预览在javascript中循环子节点,javascript,Javascript,这似乎不起作用。我做得对吗?我循环浏览孩子们并删除所有img\u预览 if(event.target.parentNode.className.indexOf('feat_img')!==1){ var innodes=event.target.parentNode.firstChild; while(event.target.parentNode.childNodes){ console.log(innodes); if(
if(event.target.parentNode.className.indexOf('feat_img')!==1){
var innodes=event.target.parentNode.firstChild;
while(event.target.parentNode.childNodes){
console.log(innodes);
if(innodes.className=='img_preview'){
event.target.parentNode.removeChild(innodes);
}
innodes=event.target.parentNode.nextSibling;
}
}
var outer=document.getElementById('outer');
对于(var i=0;i
注意:我更改了循环结束条件,因此我们可以相当确定它是否终止(在原始代码中,如果有一个子项不是
img\u preview
,我们可能会陷入无限循环)。供希望使用的人使用
.parentNode
的.nextSibling
不是一个可以从父节点.removeChild
移除的节点。这是一个无限循环,.childNodes
始终是一个真实的对象。Nope。从childNode的目标事件中,您将获得parentNode,并检查该父节点是否具有childNode以及循环是否无限。你能发布html吗?
var outer = document.getElementById('outer');
for (var i = 0; i < outer.childNodes.length; i++) {
var inner = outer.childNodes[i];
if (inner.className === 'img_preview') {
outer.removeChild(inner);
}
}
var outer = document.getElementById('outer');
Array.prototype.forEach.call(outer, function (item) {
// do your suff..
});