Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как удалить все пустые элементы UL (https://javascript.ru/forum/events/2906-kak-udalit-vse-pustye-ehlementy-ul.html)

Snipe 24.02.2009 21:42

Каюсь, схалтурил (извините). Можно так:
var uls = document.getElementsByTagName('ul');
for (var i=uls.length-1; i>=0; i--) {
  if (uls[i].innerHTML.search(/<li.*>/i) == -1)
    uls[i].parentNode.removeChild(uls[i]);


Проверил, вроде работает.

Дополнение:
В любом случае, мне кажется со строкой быстрее будет чем с домом, хотя нагрузочного тестирования не проводил.

Kolyaj 24.02.2009 23:11

Цитата:

Сообщение от Snipe
В любом случае, мне кажется со строкой быстрее будет чем с домом

Не надо портить код ради преждевременной оптимизации. Это место в любом случае тормозить не будет.

Snipe 25.02.2009 08:21

Цитата:

Сообщение от Kolyaj (Сообщение 13182)
Не надо портить код ради преждевременной оптимизации. Это место в любом случае тормозить не будет.

Почему "портить код"? Что в нем испорченного?
Мне кажется, просто дело привычки. Т.е. мне привычнее обрабатывать через innerHTML, Вам через DOM. Разве это говорит, что код испорчен?

Kolyaj 25.02.2009 09:03

Я тоже безмерно люблю innerHTML, но когда вопрос стоит "сколько тегов есть в таком-то теге", то это, разумеется, getElementsByTagName. Тут по названию метода ясно, что мы делаем, в случае же innerHTML -- из знания регулярных выражений, которые зачастую мало читабельные.

Цитата:

Сообщение от Snipe
Разве это говорит, что код испорчен?

Не испорчен, конечно, просто менее читабелен.


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