Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 19.09.2008, 13:08
Интересующийся
Отправить личное сообщение для Andrew Посмотреть профиль Найти все сообщения от Andrew
 
Регистрация: 19.09.2008
Сообщений: 11

Понятно, доходчиво объяснил, спасибо!

Если не сложно, подскажи еще как можно обратится к нужному мне элементу при клике на <a> (в конструкции, которую я описывал выше) ?
Ответить с цитированием
  #12 (permalink)  
Старый 19.09.2008, 13:14
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

А кто тебе нужен? UL?
a.parentNode - li
li.parentNode - ul, значит
a.parentNode.parentNode - ul
Ответить с цитированием
  #13 (permalink)  
Старый 19.09.2008, 18:47
Интересующийся
Отправить личное сообщение для Andrew Посмотреть профиль Найти все сообщения от Andrew
 
Регистрация: 19.09.2008
Сообщений: 11

Спасибо, я попробую, о результатах отпишусь
Ответить с цитированием
  #14 (permalink)  
Старый 19.09.2008, 23:10
Интересующийся
Отправить личное сообщение для Andrew Посмотреть профиль Найти все сообщения от Andrew
 
Регистрация: 19.09.2008
Сообщений: 11

В общем попытался, вот к чему пришел:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<link href="css.css" rel="stylesheet" type="text/css" />
</head>
<body>
<script type="text/javascript">
<!--
function childShowHide(elem, levelNum) {
/*		elem.firstChild.nextSibling.className='show';*/
		elem.nextSibling.className='show';
}

//-->
</script>
<div id="sectionsMenu"><ul id="first"><li onclick="javascript:childShowHide(this, 1); return false;"><a href="#">Бойлеры1</a></li><ul class="hidden"><li><a onclick="javascript:childOpen(this, 2); return false;" href="#">DeDietrich2</a></li><ul class="hidden"><li><a onclick="javascript:childOpen(this, 3); return false;" href="">Ёмкостные водонагреватели3</a></li><ul class="hidden"><li><a href="#">Ёмкостные водонагреватели типа B4</a></li></ul></ul></ul><li><a href="#">Газовые водонагреватели</a></li></ul>
</div>
</body>
</html>


такой вариант работает в FF,а в IE не работает, если раскоментить строчку и закомментить другую в скрипте, то в IE все работает, а в FF нет.
Ответить с цитированием
  #15 (permalink)  
Старый 19.09.2008, 23:34
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

Смотри:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Untitled Document</title>
<style>
.hidden {
	display: none;
}
</style>
</head>
<body>
<script type="text/javascript">
<!--
function childShowHide(elem, levelNum) {
/*        elem.firstChild.nextSibling.className='show';*/
        elem.nextSibling.className='show';
}
 
//-->
</script>
<div id="sectionsMenu"><ul id="first"><li onclick="childShowHide(this, 1);" id="xxx"><a href="#">Бойлеры1</a></li><ul class="hidden" id="qqq"><li><a onclick="childOpen(this, 2); return false;" href="#">DeDietrich2</a></li><ul class="hidden"><li><a onclick="childOpen(this, 3); return false;" href="">Ёмкостные водонагреватели3</a></li><ul class="hidden"><li><a href="#">Ёмкостные водонагреватели типа B4</a></li></ul></ul></ul><li><a href="#">Газовые водонагреватели</a></li></ul></div>
<div><a href="#" onclick="childShowHide(this);">3452</a><a href="#" class="hidden"> 123</a></div>
</body>
</html>


Похоже, что у ИЕ проблема с UL.
Ответить с цитированием
  #16 (permalink)  
Старый 20.09.2008, 10:01
Интересующийся
Отправить личное сообщение для Andrew Посмотреть профиль Найти все сообщения от Andrew
 
Регистрация: 19.09.2008
Сообщений: 11

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

ZoNT, спасибо большое за помощь!
Ответить с цитированием
  #17 (permalink)  
Старый 20.09.2008, 12:17
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

не за что... Не помог ведь ничем
Ответить с цитированием
  #18 (permalink)  
Старый 20.09.2008, 12:27
Интересующийся
Отправить личное сообщение для Andrew Посмотреть профиль Найти все сообщения от Andrew
 
Регистрация: 19.09.2008
Сообщений: 11

Ну почему же, теперь я точно знаю как не стоит строить меню с DOM Да и за потраченное время тоже спасбо +)
Ответить с цитированием
  #19 (permalink)  
Старый 31.10.2008, 23:16
VictoRRR_85
 
Сообщений: n/a

Вы не учли такую вещь как пробелы между тегами. Разные браузеры по-разному интерпретируют переносы в коде. Возможно данная проблема упирается в это. Поэтому имеет смыл делать проверку на тип узла. Вот пример var p=источник_события.previousSibling;
while (p.nodeType!=1){
p=p.previousSibling;
}
перебираем предыдущие узлы пока не найдём тег
Ответить с цитированием
  #20 (permalink)  
Старый 01.11.2008, 10:22
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

Да, однажды промаялся с каким-то браузером, потому что он пустые символы (табуляция) читал как textNode.
В итоге сейчас делаю getElementsByTagName где возможно.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск