Сделать элемент списка видимым по щелчку
Я назначил всем дочерним элементам ul вложенного списка display:none. Как назначить обработчики onclick, по которым они будут делаться видимыми ?
|
код выложите
|
Цитата:
|
function main() { workMenu("leftVerticalMenu"); } function log(obj) { console.log(obj); } function workMenu(id) { var menuContainer=document.getElementById(id).children[0]; closeListsNodes(menuContainer); } function closeListsNodes(container) { var object = container.getElementsByTagName("li"); for(var i = 0;i < object.length;i++) { var need = object[i].getElementsByTagName("ul"); for (var j = 0;j < need.length;j++) { need[j].style.display = "none"; need[j].id = i.toString() + j.toString(); need[j].onclick = function() {hideshow(need[j].id);}; } } } function hideshow(id){ var need = document.getElementById(id); if(need.style.display=='none'){ need.style.display='block'; }else{ need.style.display='none'; } } <!DOCTYPE html> <html> <head> <title>Start Page</title> <script src="engine.js" type="text/javascript"></script> </head> <body onload="main();"> <div id="leftVerticalMenu"> <ul> <li> <a href="#">item 1</a> <ul> <li> <a href="#">item 11</a> <ul> <li> <a href="#">item 111</a> </li> <li> <a href="#">item 112</a> </li> </ul> </li> <li> <a href="#">item 12</a> </li> </ul> </li> <li> <a href="#">item 2</a> <ul> <li> <a href="#">item 21</a> </li> <li> <a href="#">item 22</a> </li> </ul> </li> </ul> </div> </body> </html> Тут я назначил обработчики в цикле, но они не добавляются в код html. |
так вам событие onclick не на ul надо вешать а на <a href>
|
_Alex9_,
:write: <!DOCTYPE html> <html> <head> <title>Start Page</title> <style type="text/css"> ul ul{ display: none; } </style> <script> window.onload = function () { var a = document.getElementsByTagName('a') for (var i = 0; i < a.length; i++) { var ul = a[i].nextElementSibling; if (ul && ul.tagName == 'UL') a[i].onclick = (function (el) { return function () { el.style.display = el.style.display != 'block' ? 'block' : 'none'; return false } })(ul) }; } </script> </head> <body > <div id="leftVerticalMenu"> <ul> <li> <a href="#">item 1</a> <ul> <li> <a href="#">item 11</a> <ul> <li> <a href="#">item 111</a> </li> <li> <a href="#">item 112</a> </li> </ul> </li> <li> <a href="#">item 12</a> </li> </ul> </li> <li> <a href="#">item 2</a> <ul> <li> <a href="#">item 21</a> </li> <li> <a href="#">item 22</a> </li> </ul> </li> </ul> </div> </body> </html> |
Спасибо. Работает. А для чего после функции в скобках тег - })(ul) ?
|
Цитата:
смотрите Пример ошибочного использования |
Часовой пояс GMT +3, время: 05:10. |