在javascript中循环子节点

在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(

这似乎不起作用。我做得对吗?

我循环浏览孩子们并删除所有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(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..
});