1

我想检查当我单击下载驱动程序时,另一个 li 会打开,当我再次单击下载驱动程序时,它应该再次关闭。没有悬停只是onclick。当我单击下载驱动程序下方的某些 li 时,我也不希望它关闭

这是我的 HMTL:

<ul class="dropdown">
    <li><a id="drivers" onclick="dropdown(this); return false;" class="dir">Download Drivers</a>
        <ul id="driversmenu" class="sub">
            <li><a>Download Drivers</a></li>
            <li><a>Driver Widget</a></li>
            <li><a>NVIDIA Software</a></li>
        </ul>
    </li>
    </ul>

这是Javascript代码:

   function dropdown(obj)
   {
       alert("klik");
       var elements = document.getElementsByClassName("sub");
       var ids = '';
       for (var i = 0; i < elements.length; i++)
       {
           document.getElementById(elements[i].id).style.display = 'none';
       }

       if (document.getElementById(obj.id + 'menu').style.display == 'block')
       {
           alert("al open");
           document.getElementById(obj.id + 'menu').style.display = 'hidden';
       }
       else if (document.getElementById(obj.id + 'menu').style.display = 'hidden')
       {
           alert("niet open");

           document.getElementById(obj.id + 'menu').style.display = 'block';
       }
       return false;
   };

还有css,但我不知道它是否相关:

ul.dropdown {    list-style-type: none; width: 300px;float: left; height: 0px; margin-top: 0px; padding-left: 0px; }
ul.dropdown a { display: block; color: white; text-decoration: none;     list-style-type: none; }
ul.dropdown li {  float: left; padding: 0 0px; border: 1px dotted #d0d0d0;     list-style-type: none;}
ul.dropdown li ul { display: none; position: absolute; z-index: 99; }
ul.dropdown li ul li { clear: both; margin-left: 0px; padding-left: 0px; border: 0; min-width: 150px;  }
ul.dropdown li ul li:hover { background-color: #d1d1d1; }
ul.dropdown li ul li:hover a { color: red; }

我只收到来自“Klik”和“Niet open”的警报,所以这个人从不打电话:

if (document.getElementById(obj.id + 'menu').style.display == 'block')
{
    alert("al open");
    document.getElementById(obj.id + 'menu').style.display = 'hidden';
}

有人知道我在做什么错吗?提前致谢

4

1 回答 1

2

尝试

function dropdown(obj)
{
    var elements = document.getElementsByClassName("sub");
    var ids = '', display = document.getElementById(obj.id+'menu').style.display;
    for(var i=0; i < elements.length; i++) {
        elements[i].style.display='none';
    }
    if(!display || display=='none'){
        document.getElementById(obj.id+'menu').style.display='block';
    }
    return false;
}; 

演示:小提琴

于 2013-04-26T12:58:46.283 回答