我试图制作一个只在您点击主菜单中的项目时才会出现的子菜单。我已经制作了一段代码,但它似乎没有工作,只是没有变化。我花了很多年的时间试图让它太有效但不能,如果有人可以提供帮助我真的很感激。我试图避免使用jquery,并希望它能够一次打开一个子菜单。
这是我的js代码:
function hasClass(element, cls) {
return (' ' + element.className + ' ').indexOf(' ' + cls + ' ') > -1;
}
function menuSlider(subMenu) {
var el = document.getElementById(subMenu);
/* Reset all submenu classes */
document.getElementById("dashboardSubMenu").className = "subMenu dashboardSubMenu";
document.getElementById("pagesSubMenu").className = "subMenu pagesSubMenu";
document.getElementById("mediaSubMenu").className = "subMenu mediaSubMenu";
document.getElementById("styleSubMenu").className = "subMenu stylesSubMenu";
document.getElementById("settingsSubMenu").className = "subMenu settingsSubMenu";
if (hasClass(el, 'selected') === false) {
/* Open submenu */
document.getElementById(subMenu).className = el.className + ' selected';
}
}
我有一个带有代码的JSFiddle http://jsfiddle.net/xR47w/
答案 0 :(得分:3)
第一个问题是在jsfiddle中你的代码在页面的onload事件上,并且由于你使用onclick
方法,你的函数必须是全局的。因此,请从放置代码的下拉列表中进行更改。
然后,其中一个id
s
document.getElementById("styleSubMenu").className
应该是
document.getElementById("stylesSubMenu").className
(错过s
中的styles
)
这导致语法错误,并且从未到达检查类的代码。
演示