Как удалить все пустые элементы UL
Здравствуйте. Помогите пожалуйста написать функцию.
Есть список вида: <ul id="navigation"> <li>For Parents <ul id="submenu_For_Parents"> <li>Item <ul id="submenu_Item"></ul> </li> </ul> </li> <li>For Students <ul id="submenu_For Students"></ul> </li> <li>For Teachers <ul id="submenu_For Teachers"> <li>Hello</li> </ul> </li> </ul> Нужно написать функцию, которая будет удалять все пустые теги UL, т.е. те, в которых нет тегов LI (не просто ничего нет, а именно тегов LI). Уровней вложения может быть бесконечное количество. Спасибо. |
var uls = document.getElementsByTagName('ul'); for (var i=uls.length-1; i>=0; i--) { if (uls[i].innerHTML.search('li') == -1) uls[i].parentNode.removeChild(uls[i]); } |
Цитата:
Цитата:
|
Извините, но к сожалению не работает... :(
|
Kolyaj,
Ну хорошо. Там просто ничего нет. :) |
Цитата:
Цитата:
|
Snipe,
Эээ... ну создал страничку с этим списком, вашей функцией и кнопкой, которой присвоил эту функцию. По нажатию кнопки удаляется последний элемент LI. Тот, в котором написано "Hello". Вот и всё. |
Цитата:
UPD: Хотя может и не будет, т.к. в ИЕ имена тегов приводятся к верхнему регистру. |
smashercosmo,
Если вы уверены, что в <ul> не будет лишних символов (включая перенос строки или пробел), то можете воспользоваться такой конструкцией: var uls = document.getElementsByTagName('ul'); for (var i=uls.length-1; i>=0; i--) { if(!uls[i].hasChildNodes()) uls[i].parentNode.removeChild(uls[i]); } В крайнем случае, такой: var uls = document.getElementsByTagName('ul'); for (var i=uls.length-1; i>=0; i--) { if (uls[i].getElementsByTagName("li").length == 0) uls[i].parentNode.removeChild(uls[i]); } |
Огромное спасибо. Заработало.
|
Часовой пояс GMT +3, время: 17:07. |