Понятно, доходчиво объяснил, спасибо!
Если не сложно, подскажи еще как можно обратится к нужному мне элементу при клике на <a> (в конструкции, которую я описывал выше) ? |
А кто тебе нужен? UL?
a.parentNode - li li.parentNode - ul, значит a.parentNode.parentNode - ul |
Спасибо, я попробую, о результатах отпишусь :)
|
В общем попытался, вот к чему пришел:
<!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 нет. |
Смотри:
<!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. |
вот тебе и кроссбраузерность получилась :) Ну ладно, я уже реализовал по другому, заказчик ждать не будет.
ZoNT, спасибо большое за помощь! |
не за что... Не помог ведь ничем :)
|
Ну почему же, теперь я точно знаю как не стоит строить меню с DOM :) Да и за потраченное время тоже спасбо +)
|
Вы не учли такую вещь как пробелы между тегами. Разные браузеры по-разному интерпретируют переносы в коде. Возможно данная проблема упирается в это. Поэтому имеет смыл делать проверку на тип узла. Вот пример var p=источник_события.previousSibling;
while (p.nodeType!=1){ p=p.previousSibling; } перебираем предыдущие узлы пока не найдём тег |
Да, однажды промаялся с каким-то браузером, потому что он пустые символы (табуляция) читал как textNode.
В итоге сейчас делаю getElementsByTagName где возможно. |
Часовой пояс GMT +3, время: 20:22. |