function showMenu(parentElement){
var uls= parentElement.getElementsByTagName("ul");
if (uls.length > 0)
uls[0].setAttribute("style","display: block");
}
function load(){
var lis = document.getElementsByTagName("li");
for (var i = 0; i < lis.length; i++) {
lis[i].addEventListener("click", function(){
showMenu(this);
});
}
}
我有这个脚本,这使得我可以打开正确的&#39; ul&#39;当&#39; li&#39;点击。 然后我添加了这个
function Meny(){
var parentElement = document.getElementById("cssmenu");
var lis = parentElement.getElementsByTagName("ul");
for (var i = 0; i < lis.length; i++) {
lis[i].setAttribute("style","background: white");
}
}
并将其附加到菜单外部的div上,以便菜单在其他任何地方点击时很好地关闭。 然后遇到一个定位问题,所以我将我的cssmenu设置为position:fixed。 我可以忍受这一点,我知道这可能是一种不好的做法。然后我发现,我可以用不透明度0.2隐藏它,当它变成200%以上时,然后在悬停时可见。
我现在的问题是,当我点击另一个li时,它不会关闭其他li的ul。 因此子菜单打开,但是当我点击它的兄弟或任何其他li时,它不会关闭,这不是那个li的一部分。 我在菜单中使用this关键字,如下所示:
<nav id="cssmenu">
<li onclick="showMenu(this);"><a></a>
<ul>
<li></li>
</ul>
</nav>
我有一个更长的菜单,有很多子菜单。 我已经看到为此工作jquery了,但是不能让jquery工作,而且,我渴望学习javascript,因为逻辑在某种程度上是可以理解的。我不熟悉的所有关键词,以及所有这些ul,li,ul,至少可以说令人困惑..
我的css非常直接,是学习所有ul li ul li规则的好方法。只需简单的定位,我就能理解。
#cssmenu{}
#cssmenu ul li{}
#cssmenu ul ul {display:none}
#cssmenu a{}
我最近开始将下拉悬停菜单转换为点击菜单,更适合触摸屏,并至少保留一些其他悬停效果。
是否可以使用javascript,让孩子接触,关闭,按下兄弟姐妹,或叔叔或阿姨或其他任何东西,但这些李的元素?
我用jquery看过它,就像在这些例子中一样:
http://jsfiddle.net/contendia/ddXBU/4/
我试图在第二个例子中使用这个代码,因为它对我和李的说法很贴切,而没有&#39; class&#39;在菜单中指定。 然后我把#leftmenu改为#cssmenu,没有任何运气。 我只有我的
<nav id="cssmenu">
作为我菜单中的一个独特元素,而THIS关键字很好地处理了这个问题。另外,我读到了唯一的id是优选的,因为ul li(标签),加载速度慢于id,易于理解。 我没有这么大的页面,至少还没有,这些都是我关心的问题,而且我并不感兴趣为我的所有菜单项提供唯一的ID。 我当然可以使用jquery,但这是我需要阅读的关于如何实现的内容,我尝试按照这些说明操作,但不知何故失败了。
另外,我完全不明白,为什么3&#39; rd脚本正在关闭cssmenu,我尝试更改背景:white,显示:none,这只是隐藏我的整个菜单。我觉得这很奇怪,就像我之前尝试过的那样,它可以改变每个&#39; ul的颜色,除了顶部的,可见的顶级菜单项。
感谢任何回应,我被告知要使用jquery,但是#*#当它不能工作时会有点痛苦,我觉得我只是非常接近解决方案。 在我看来,需要另一个if语句,似乎无法弄清楚那个,作为数组,FOR关键字,这是我真正需要了解的更多信息。