Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как обратиться к "старшим" потомкам? (https://javascript.ru/forum/dom-window/40656-kak-obratitsya-k-starshim-potomkam.html)

Kvark 14.08.2013 15:31

Как обратиться к "старшим" потомкам?
 
Приветсвую, извеняюсь за делетанкский вопрос но никак не найду и несображу как можно обратиться только к старшим потомкам?

скажем есть такая структура:
<div>
	<div>
		что то
	</div>
</div>
<div>
	<div>
		что то
	</div>
	<div>
		<div>
			что то
		</div>
	</div>
</div>
<div>
	что то
</div>

я хочю назначить ид верхним потомкам, как назначить знаю, вок как к ним обратиться - нет :(
getElementsByTagName('div') выдает их общее количество :(

что бы навыходе получить такое:
<div id="1">
	<div>
		что то
	</div>
</div>
<div  id="2">
	<div>
		что то
	</div>
	<div>
		<div>
			что то
		</div>
	</div>
</div>
<div  id="3">
	что то
</div>

Kvark 14.08.2013 15:38

пока додумался только что проверять кто родитель, если тот же что и контейнер то ок старший потомок, но может есть решение получше?

animhotep 14.08.2013 15:43

если не мешают библиотеки то $("body>div")

Kvark 14.08.2013 15:44

к сожалению голый javascript нужен :(

animhotep 14.08.2013 15:51

а, ну тогда document.querySelectorAll("body>div") :)

danik.js 14.08.2013 16:29

Дзен-трансгуманист, а почему бы не использовать container.children чтобы не гулять по текстовым и комментовым нодам?

Kvark 14.08.2013 17:35

немогли бы вы объяснить как эта конструкция работает? мне нужно немного изменить ее адаптирую под свои нужды...

Kvark 14.08.2013 18:06

ладно не будите вашего кота, я своего кота попросил и он вроде неплохо справился, но спасибо за предложеный способ :)

разве тока как проснется и попросите глянуть в это и может посоветует что:
while (node)
	{
		if (node.nodeType == 1 && node.tagName.toLowerCase() == childTag) 
		{
			if (id == 0)
			{
				node.id = "SearchPanel";
			};
			if (id == 1)
			{
				node.id = "ServiceCatalog";
			};
			if (id == 3)
			{
				node.id = "SelectMenu";
			};
			if (id == 4)
			{
				node.id = "MostPopular";
			};
			++id ;
		}
		node = node.nextSibling;
	};

danik.js 14.08.2013 18:27

Дзен-трансгуманист, понимает, начиная с 6 версии. Правда с ошибкой - в IE туда попадают и комменты тоже.
https://developer.mozilla.org/en-US/...ement.children

Kvark 14.08.2013 18:41

спасибо, про масив я что то не подумал даже...


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