单个菜单项始终保持“.selected”类,即使未选中也是如此

时间:2012-10-30 18:27:23

标签: javascript

好的,所以我从以前的开发者那里继承了一个网站进行一些升级。令我烦恼的一件事(虽然不是客户端)是单个选项卡始终是“.selected”选项卡,即使实际上没有选中它也是如此。从技术上讲,我认为它是“默认选择”。

网站为rooferanchorage.com

我尝试从.js中的最后一部分删除默认值但没有效果。你可能会说,我是一个完全javascript的文盲。我相信这是相关的代码 - 关于如何使所选课程正常工作的任何建议?

isSelected:function(menuurl){
    var menuurl=menuurl.replace("http://"+menuurl.hostname, "").replace(/^\//, "")
    return (tabdropdown.currentpageurl==menuurl)
},

    init:function(menuid, dselected){
        this.standardbody=(document.compatMode=="CSS1Compat")? document.documentElement : document.body //create reference to common "body" across doctypes
        var menuitems=document.getElementById(menuid).getElementsByTagName("a")
        for (var i=0; i<menuitems.length; i++){
            if (menuitems[i].getAttribute("rel")){
                var relvalue=menuitems[i].getAttribute("rel")
                document.getElementById(relvalue).firstlink=document.getElementById(relvalue).getElementsByTagName("a")[0]
                menuitems[i].onmouseover=function(e){
                    var event=typeof e!="undefined"? e : window.event
                    tabdropdown.dropit(this, event, this.getAttribute("rel"))
                }
            }
            if (dselected=="auto" && typeof setalready=="undefined" && this.isSelected(menuitems[i].href)){
                menuitems[i].parentNode.className+=" selected default"
                var setalready=true
            }
            else if (parseInt(dselected)==i)
                menuitems[i].parentNode.className+=" selected default"
        }
    }

1 个答案:

答案 0 :(得分:1)

您的源代码第72-73行是:

//SYNTAX: tabdropdown.init("menu_id", [integer OR "auto"])
tabdropdown.init("colortab", 3)

引用问题中的代码,您可以在init方法中看到条件if (dselected=="auto" ...,并且显然会根据网址检查菜单项中锚点的href看看它是否应该被选中。

目前您的代码正在传递3,这意味着它始终是第四个标签 - 从零开始的索引0,1,2,3可以解释为什么&#34;商业&#34;总是被选中。

回答,尝试将3更改为"auto",或者,如果您使用静态html文件(例如,如果residential.html是实际的html文件),请尝试更改整数以表示标签应该为每一个选择。例如,住宅将是2