[JS] chileNodes

0

Próbuje nadać dzieciom styl display=none. Co robie źle?

function hideALL()
{
	all = document.getElementById('menu_t');
	children = all.childNodes;
	for (var i = 0; i < children.length; i++) 
	{
		children[i].getElementsByTagName("div").style.display = "none";
	}
}

błąd

Błąd: children[i].getElementsByTagName("div").style has no properties
Plik źródłowy: http://antykomornik.pl/test/js.js
Wiersz: 15
0

Bez sprawdzania, ale getElementsByTagName() zwraca Ci kolekcję, a kolekcja nie ma atrybutu style.

0

co w takim przypadku zrobic? chce ukryc diva a mam go w drzewie tak zapisanego

<ul>
{foreach from = $data item=depart}
	<li>
<div class="t_m">	

	<a href="{if $depart.main.url!=""}http://{$depart.main.url}" target="_blank"{elseif $depart.main.content!=""}index.php?id={$depart.main.id}"{else}javascript:void(0)" onmouseover="show({$depart.main.id})"{/if}>{$depart.main.name}</a>	
	<div id="menu{$depart.main.id}" class="t_p" style="display:none">
	{foreach from = $depart.more item=dep}
		<nobr>-&nbsp;<a href="{if $dep.url!=""}http://{$dep.url}" target="_blank"{else}index.php?id={$dep.id}"{/if}>{$dep.name}</a></nobr>
	{/foreach}
	</div>

</div>
	</li>
{/foreach}
</ul>
0

no jak chcesz nadać styl dzieciom to wywalasz to getElementsByTagName("div"). a jeśli chcesz nadać styl divom których rodzicami są dzieci to robisz identyczną podpętlę:

function hideALL()
{
	all = document.getElementById('menu_t');
	children = all.childNodes;
	for (var i = 0; i < children.length; i++) 
	{
		childrenDivs = children[i].getElementsByTagName('div');
		for (var j = 0; j < childrenDivs.length; j++)
		{
			childrenDivs[j].style.display = "none";
		}
	}
}
0

no tak tyle ze funkcja zbiera wszystkie divy do koszyka które napotka nawet te wyzej co są znikło mi całe menu oprócz diva "menu_t", poradziłam sobie poprzez sprawdzenie czy klasa równa sie "t_p" ale myśle ze to kulawe rozwiązanie :/

1 użytkowników online, w tym zalogowanych: 0, gości: 1