2015-07-05 3 views
0
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; 
    } 
} 

Это, кажется, не работает. Я делаю это правильно?Looping childnodes в javascript

+0

В '.nextSibling' из' .parentNode' не является узлом вы можете '.removeChild' от родителя. – Bergi

+1

Это бесконечный цикл, '.childNodes' всегда является правдивым объектом. – Bergi

+0

Нет. Из целевого события childNode вы получаете parentNode и проверяете, имеет ли этот родитель childNode, и цикл бесконечен. Можете ли вы опубликовать html? – Lucky

ответ

2

Is this what you are looking for? Я петлю через детей и удаляю все img_preview.

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); 
    } 
} 

Примечание: Я изменил конец цикла условие, чтобы мы могли быть уверены, что завершает работу (в исходном коде, если есть ребенок, который не img_preview, мы могли бы застрять в бесконечном цикле).

0

Для тех, кто хочет использовать forEach

var outer = document.getElementById('outer'); 
Array.prototype.forEach.call(outer, function (item) { 
    // do your suff.. 
});