Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Условие для структуры html кода (https://javascript.ru/forum/dom-window/31465-uslovie-dlya-struktury-html-koda.html)

qazibum 08.09.2012 23:31

Условие для структуры html кода
 
Нужно в определенный элемент добавить класс, при условие, что на странице будет обнаружена такая ситуация
<ul class="menu">
<li class="active">
<a href=""></a>
<ul><li></li></ul>
</li>
</ul>


но не такая

<ul class="menu">
<li class="active">
<a href=""></a>
</li>
</ul>


Т.е. если активен (class="active") пункт с вложенным списком, то надо произвести действие, если не активен или активен, но без вложенного списка, то действие не производить.
Как такое сделать?

bes 08.09.2012 23:40

проверить его наличие
например, ...children[1].tagName == 'UL'
или ...getElementsByTagName('ul').length == 0

qazibum 09.09.2012 00:13

Вот так написал, работает. Но кажется мне что это фигня какая-то :)
if(document.getElementById('active')) {
	if(document.getElementById('active').children[1].tagName == 'UL') {
		console.log('ok');
	} else {
		console.log('no ok');
	}
console.log('ok ok');
} else {
console.log('no ok no ok');
}

bes 09.09.2012 10:22

<ul class="menu">
	<li class="active">
		<a href=""></a>
		<ul><li></li></ul>
	</li>
</ul>

<ul class="menu">
	<li class="active">
		<a href=""></a>
	</li>
</ul>

<script>
window.onload = function () {
	var elems = document.getElementsByClassName('active');//сделать кроссбраузерной
	var len = elems.length;
	for (var i = 0; i < len; i++) {
		if(elems[i].children[1].tagName == 'UL') {
			elems[i].children[0].innerHTML = 'link' + i;
		}
	}
}
</script>


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