Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удалить все div элементы 
:(
    Опции темы
4epT
Дата 1.2.2012, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: нет
Всего: 3



Здравствуйте! Имеется html страница, на которой N div элементов, у каждого может быть вложенный div. Наприем вот такая страница:

Код

<div>
</div>

<div>
         <div>
                  <div>
                  </div>
         </div>
</div>

<div>
</div>


Нужно нативным JS скриптом удалить эти дивы из DOM ...

Подскажите пожалуйста в какую сторону смотреть )
PM MAIL   Вверх
$дмитрий
Дата 1.2.2012, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 2
Всего: 45



Удалить на странице все div? Тогда примерно так

Код

<script>
        var d = document.body.getElementsByTagName('DIV');
        for(var i=0; i<d.length; i++)
        {
            document.body.removeChild(d[i]);
        }
        </script>

PM MAIL   Вверх
Amphiluke
Дата 1.2.2012, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


   ☽
***


Профиль
Группа: Завсегдатай
Сообщений: 1253
Регистрация: 26.8.2009

Репутация: 35
Всего: 112



Цитата($дмитрий @  1.2.2012,  22:34 Найти цитируемый пост)
Тогда примерно так

Тут следует учесть, что родительским элементом div`а не обязательно является body. Такой скрипт потенциально способен выбросить исключение при попытке удалить чужой дочерний элемент.

Поэтому тело цикла должно быть примерно таким:
Код

d[i].parentNode.removeChild(d[i]);


Добавлено через 6 минут и 21 секунду
Более того, ваш код потерпит неудачу для случая нескольких рядом стоящих div`ов. Это связано с тем, что метод getElementsByTagName возвращает «живую» коллекцию, которая меняется «на лету» при удалении одного из элементов коллекции, так что инкрементирующийся счетчик цикла пропустит некоторые элементы:
Вот проверьте на такой конструкции:
Код

<div id="f1">
    <div>
        <div>

        </div>
        <div>
        </div>
     </div>
</div>

<div id="f2">
    <div>
        <div>

        </div>
        <div>
        </div>
     </div>
</div>



Добавлено через 10 минут и 20 секунд
Вот более стабильная реализация:
Код

var d = document.body.getElementsByTagName('DIV');
while (d.length > 0) {
    d[0].parentNode.removeChild(d[0]);
}

PM   Вверх
$дмитрий
Дата 1.2.2012, 19:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 2
Всего: 45



Все правильно пишешь, поддерживаю  smile +
PM MAIL   Вверх
4epT
Дата 1.2.2012, 22:59 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 784
Регистрация: 13.8.2007

Репутация: нет
Всего: 3



Вот так сделал =) Работает ... Но боюсь что на большом DOM будет долго работать

Код

var list = document.getElementsByTagName("div");
        
        do{
            for (var i = 0; i < list.length; i++) {
                (list[i].parentNode).removeChild(list[i]);
            }
            
            list = document.getElementsByTagName("div");
        } while(list.length > 0);

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0439 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.