Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   IE6 и parentNode.parentNode (https://javascript.ru/forum/events/1146-ie6-i-parentnode-parentnode.html)

lancer 09.04.2008 15:30

IE6 и parentNode.parentNode
 
Во всех бразуерах пункты меню открывается, в IE нет. Так стало после того как я положил головной пункт в <h2>
и соответственно в скрипте стал подниматься на одного родителя выше: parentNode.parentNode.childNodes[2], а не как раньше parentNode.childNodes[2]. Очевидно, что в IE до скрипта дело доходит, но условия if не выполняются. В нижней панели в левом углул в IE написано: ошибка на странице.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>Error in IE</title>
	
	<style type="text/css">
		#openingMenu li ul{display:none;}
	</style>
	
	<script type="text/javascript">
		function uler()
		{
			if(this.parentNode.parentNode.childNodes[2].style.display=="none" || this.parentNode.parentNode.childNodes[2].style.display=="")
			{
				this.style.fontWeight="bold";
				this.parentNode.parentNode.childNodes[2].style.display="block";
			}
			else
			{
				this.style.fontWeight="normal";
				this.parentNode.parentNode.childNodes[2].style.display="none";
			}
		}	
	</script>

</head>

<body>
	<ul id="openingMenu">
		<li><h2><a href="#" onclick="uler.apply(this,[]); return false">Скважины водоснабжения</a></h2>
			<ul>
				<li><a href='#'>Пункт номер 1</a></li>
				<li><a href='#'>Пункт номер 2</a></li>
				<li><a href='#'>Пункт номер 3</a></li>
			</ul>
		</li>

        <li><h2><a href="#" onclick="uler.apply(this,[]); return false">Установки</a></h2>
			<ul>
				<li><a href='#'>Пункт номер 1</a></li>
				<li><a href='#'>Пункт номер 2</a></li>
				<li><a href='#'>Пункт номер 3</a></li>
			</ul>
	    </li>
	</ul>			
</body>
</html>

lancer 09.04.2008 17:12

Решена проблема.
Надо обращаться к 1-ому ребенку, т.к. нумерация идет с нуля, а все это дело работало в фоксе и опере, т.к. там перенос строки тоже считается за ребенка.

tenshi 09.04.2008 19:08

Цитата:

parentNode.parentNode
не надо так делать. лучше пропиши специальные классы и специальной функцией ищи элементы с нужными классами.

tenshi 09.04.2008 19:10

а вообще, просмотри свойства nodeName всех детей и всё поймёшь...


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