Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   небольшая неясность.. (https://javascript.ru/forum/misc/14359-nebolshaya-neyasnost.html)

DimonCry 12.01.2011 19:25

небольшая неясность..
 
создаю функцию, которая вызывается при клике по кнопке для удаления рисунков в тэге body, но по непонятным мне причинам удаляются не все рисунки за один клик, а только половина, при повторном клике удаляется еще половина которая осталась, и так до тех пор пока не останется один рисунок, который также можно удалить одним кликом.
почему нельзя удалить их за один раз??
вот функция:
function deleteImg(){
var img=document.getElementsByTagName('img');
for (var i=0;i<=img.length;i++)
document.getElementsByTagName('body')[0].removeChild(img[i]);
}


ps может надо, рисунки создаются в боди при клике так:
function createImg(){
var imgNode=document.createElement('img');
imgNode.setAttribute('src','map.jpg');
imgNode.setAttribute('width','300');
document.body.appendChild(imgNode);
}

B~Vladi 12.01.2011 19:37

Попробуй так:
function deleteImg(){
  var img=document.getElementsByTagName('img');
  for(var i=0; i < img.length; i++){
    var image = img[i];
    image.parentNode.removeChild(image);
  }
}


Обязательно познакомься с FireBug-ом.

DimonCry 12.01.2011 19:49

B~Vladi, тоже самое, удаляет по половине, а если нечетное число, то большую половину сначала удаляет. То же и в Opera и IE(самые новые)

Matre 12.01.2011 19:52

function deleteImg() {
images=document.getElementsByTagName('img');
while(images[0])
images[0].parentNode.removeChild(images[0]);
}


nodelist-динамический,при удалении элементов length меняеться

DimonCry 12.01.2011 20:18

Спасибо, работает!

B~Vladi 12.01.2011 20:51

Цитата:

Сообщение от Matre
nodelist-динамический,при удалении элементов length меняеться

:lol: Вот я лох

ksa 12.01.2011 21:18

Matre, поправлю тебе карму... :)


Часовой пояс GMT +3, время: 10:06.