Сделать элемент списка видимым по щелчку
Я назначил всем дочерним элементам 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, время: 19:03. |