首先感谢
bigheadlyf 的这个帖子:
[原创] 清新简洁Web2.0风格 iKK2 for PJBlog2.7(最新修正2007.11.18)
http://bbs.pjhome.net/thread-26432-1-1.html
其中有一个文件是:
common/cache.asp //实现顶部导航菜单的Tab效果(不影响其他主题使用)
按照bigheadlyf提供的文件覆盖后,切换不同栏目时,导航菜单确实有Tab效果,
但是具体到某一篇日志时,导航菜单选中状态却总是在“首页”上,这一点用户体验非常不好。
那个ASP我看得头都大了,于是我自己研究了下,将这个问题用
Javascript解决了,
因为对Javascript研究不深,所以可能写的有些啰唆,不过逻辑很清晰。
当然了,可能有比这个方法更好的方法,还是请大家慷慨分享交流下。
因为我都是用的静态日志,所以这里提供的是静态日志解决方法,动态日志的话原理和这个类似,估计大家自己稍作改动就可以了。
原理就是,将分类名称作为一个字符串,打开日志后,先将导航上的所有链接的样式清除掉,然后用当前日志的所属分类与那个字符串比较,相等的话,就加上相关样式。
我已经在程序里加上了注释,写的很详细了。
有同样做网页开发相关的朋友,或许可以加个友情链接,常交流一下,共同进步。
打开
Template/Article.asp这个文件,在页面最后加上:
引用:
<script type="text/javascript">
//定义分类字符串
var str="<$Cate_Title$>";
//获取导航链接数组
var menulist=document.getElementById("menu").getElementsByTagName("a");
//定义数组长度变量
var n=menulist.length;
//将所有有选中状态的链接样式清除掉
for(var m=0;m<n;m++){
var cls=menulist[m].className;
var clsd="menuA menuB";
if(cls==clsd){
menulist[m].className="menuA";
break;
}
}
//与最开始定义的字符串进行比较,相等的就加上选中样式
for(var i=0;i<n;i++){
var strspan=menulist.getElementsByTagName("span")[0].innerHTML;
if(strspan==str){
//在这里写上你的样式
menulist.style.background="";
break;
}
}
</script>
当你确认修改好了后,重新生成一遍日志就可以了,演示请看:http://www.cwdn.net/,点击某一篇日志即可看到效果。
[
本帖最后由 cwdn.net 于 2007-12-11 11:25 编辑 ]