对,是跳转以后的页面,而不是跳转前的页面。这样说吧, 在Index页面点击"菜单1"(menu1.html)后,页面将跳转至menu1.html对吧?我希望跳转以后, 在menu1.html页面下,"菜单1"是被选中的;同理,在任何页面点击“子菜单1-1”,页面将跳至smenu1.html,跳转以后,在smenu1.html页面下,菜单1是被选中的,且子菜单项全部显示,子菜单1-1也被选中状态。其实这个效果的目的是让人清晰的知道当前是选中了哪个菜单。而现在不管选哪个菜单项,页面刷新后,导航菜单没有相应的显示。不知道说清楚了没有?
对,是跳转以后的页面,而不是跳转前的页面。这样说吧, 在Index页面点击"菜单1"(menu1.html)后,页面将跳转至menu1.html对吧?我希望跳转以后, 在menu1.html页面下,"菜单1"是被选中的;同理,在任何页面点击“子菜单1-1”,页面将跳至smenu1.html,跳转以后,在smenu1.html页面下,菜单1是被选中的,且子菜单项全部显示,子菜单1-1也被选中状态。其实这个效果的目的是让人清晰的知道当前是选中了哪个菜单。而现在不管选哪个菜单项,页面刷新后,导航菜单没有相应的显示。不知道说清楚了没有?
那就麻烦你告诉我怎么做, 因为我不懂js...如果没点击,就不用产生任何效果啊。比如在Index页面,"首页"菜单项应该是被选中的,鼠标移开导航栏,那么就只有“首页”是被选中的。有哪位会的,能不能把代码贴出来,如果确实可行,立马揭帖给分,并万分感激,都求这个解决方法很久了,还未解决……
var idname = new String(btn.id);
var s = idname.indexOf("_");
var e = idname.lastIndexOf("_")+1;
var tabName = idname.substr(0, s);
var id = parseInt(idname.substr(e, 1));
//=============这里修改过了,兼容ff。样式在ff下问题多多,你自己下个ff看就知道了
var tabNumber = btn.parentNode.getElementsByTagName('li').length;
for(i=0;i<tabNumber;i++){
document.getElementById(tabName+"_div_"+i).style.display = "none";
document.getElementById(tabName+"_btn_"+i).className = "";
};
document.getElementById(tabName+"_div_"+id).style.display = "block";
btn.className = "home";
}
//==================下面是新添加的代码====================================
function FindParentId(obj){
var reg=/^tabnav_(btn|div)_(\d+)$/i
while(obj=obj.parentNode){
if(obj.id&®.test(obj.id))return reg.exec(obj.id);
}
return null;
}
document.onclick=function(e){
e=e||event;
var obj=e.srcElement||e.target;
var match=FindParentId(obj);
if(match&&!/#menuid=\d+$/gi.test(obj.href))obj.href+="#menuid="+match[2];
}
function SetHomeClass(){
var lstr=window.location.href;
var m=/#menuid=(\d+)$/gi.exec(lstr);
if(m){
if(document.getElementById("tabnav_btn_"+m[2]))tabit(document.getElementById("tabnav_btn_"+m[2]));
}
}
if(window.attachEvent)window.attachEvent("onload",SetHomeClass);
else if(window.addEventListener)window.addEventListener("load",SetHomeClass,false);
可能还有点地方要改,但这样就方便得多了,状态容易保留。
不需要加onclick的因为他用了document.onclick