Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Удаление элементов DOM в цикле (https://javascript.ru/forum/misc/66543-udalenie-ehlementov-dom-v-cikle.html)

spo 22.12.2016 04:34

Удаление элементов DOM в цикле
 
Прошу подсказать что я делаю не так?
<div class="object">1</div>
<div class="object">2</div>
<div class="object">3</div>
<div class="object">4</div>
<div class="object">5</div>

<script>
	for(let i = 0; i < document.getElementsByClassName('object').length; i++) {
		document.getElementsByClassName('object')[i].remove();
	}
</script>

Удаляется лишь часть элементов.
Я пробовал в цикле помещать найденные элементы в массив и уже через него удалять, тогда все работает, но создание лишнего массива кажется избыточным.

spo 22.12.2016 04:44

Получилось так
for(let i = 0, k = document.getElementsByClassName('object').length; i < k; i++) {
	document.getElementsByClassName('object')[0].remove();
}

ksa 22.12.2016 08:51

Цитата:

Сообщение от spo
что я делаю не так?

Как минимум, не рационально используешь методы. :)

<div class="object">1</div>
<div class="object">2</div>
<div class="object">3</div>
<div class="object">4</div>
<div class="object">5</div>
<script type='text/javascript'>
	var obj=document.querySelectorAll('.object')
	for(let i = 0; i < obj.length; i++) {
		obj[i].remove();
	}
</script>

ksa 22.12.2016 08:56

Так вот еще...
<div class="object">1</div>
<div class="object">2</div>
<div class="object">3</div>
<div class="object">4</div>
<div class="object">5</div>
<script type='text/javascript'>
	var obj;
	while (obj=document.getElementsByClassName('object'),obj[0]) {
		obj[0].remove();
	}
</script>

рони 22.12.2016 09:02

ksa,
:-?

Цитата:

Сообщение от ksa
while (obj=document.getElementsByClassName('object'),obj[0])

зачем искать много раз, достаточно одной таблетки :)

var obj=document.getElementsByClassName('object');
  while (obj[0]) {
    obj[0].remove();
  }

ksa 22.12.2016 10:52

Цитата:

Сообщение от рони (Сообщение 438641)
достаточно одной таблетки :)
var obj=document.getElementsByClassName('object');
  while (obj[0]) {
    obj[0].remove();
  }

Да, так лучше. :yes:

spo 22.12.2016 10:53

Спасибо всем


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