JavaScript添加和删除不起作用的类

时间:2014-08-04 20:46:49

标签: javascript html css

我试图制作一个只在您点击主菜单中的项目时才会出现的子菜单。我已经制作了一段代码,但它似乎没有工作,只是没有变化。我花了很多年的时间试图让它太有效但不能,如果有人可以提供帮助我真的很感激。我试图避免使用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/

1 个答案:

答案 0 :(得分:3)

第一个问题是在jsfiddle中你的代码在页面的onload事件上,并且由于你使用onclick方法,你的函数必须是全局的。因此,请从放置代码的下拉列表中进行更改。

然后,其中一个id s

中的名称错误
document.getElementById("styleSubMenu").className

应该是

document.getElementById("stylesSubMenu").className

错过s 中的styles

这导致语法错误,并且从未到达检查类的代码。

http://jsfiddle.net/gaby/xR47w/4/

演示