以前写过一篇文章也是关于视觉标识的:《CSS实现视觉标识》。在这篇文章中我介绍了用CSS来实现视觉标识的效果,但是里面的DEMO只有一个页面,而且链接没有动态的参数。
很多时候我们在实际开发的时候都是在同一个页面而且有如:“article.php?id=10”这样的样子,看下面这段代码:
<ul id=”menu”>
<li><a id=”a11″ href=”?id=11″>index</a></li>
<li><a id=”a12″ href=”?id=12″>video</a></li>
<li><a id=”a13″ href=”?id=13″>music</a></li>
<li><a id=”a14″ href=”?id=14″>message</a></li>
</ul>
当我们想用JS来在当前页面写代码实现点击后变色,可能你会想到下面这段JS代码:
var menu = document.getElementById(“menu”);
var menuA = menu.getElementsByTagName(“a”);
for ( var i = 0; i<menuA.length; i++ ) {
menuA[i].onclick=function(e){
this.style.background=”red”;
return false;
}
}
但是这段代码确没有达到效果。
原因:
因为只有一个页面而且每个链接都是有参数的,点击任何一个链接都会重新载入页面。DOM重新载入,那么JS的效果就不起作用了。
解决方法:
在页面每次载入时取出URL的参数,对应的给每个A链接加上ID。页面载入时判断参数与ID是否一致,一致就给链接动态加上样式Class。正确的JS是这样写的:
var str = window.location.search.substring(4,6); //取参数ID号
var menu = document.getElementById(“menu”);
var menuA = menu.getElementsByTagName(“a”); //获取所有链接
for ( var i = 0; i<menuA.length; i++ ) { //循环确定是否匹配
var menuAID = menuA[i].getAttribute(“id”).substring(1,3);
if ( str == menuAID ) {
menuA[i].className = “active”; //动态加上class
}
}
特别感谢青色和亚当学院3群的同学提供思路。
链接失效了!
各种笔记本配件销售,批发,你想升级自己的笔记本吗,请到三色笔记本配件商城选自己合适的配件
提供萨摩耶详细信息
你好,keelii,我是视觉元素,首先谢谢你上次对我的帮助,现在有一个小问题想请求你,就是我的博客不能正常显示评论,请问我改怎么修改,期待你的回复。
http://www.sjysvip.com/hdyst/
不得不说,很烂的思路。。
首先
document.getElementsByTagName(“a”).onclick = function(){
this.style.backgroundColor = “red”;
}
就是错误的代码,getElementsByTagName获取的是DOM节点集合,这不是jQuery对象,哪能直接全部绑定事件。
改下你的代码
var menu = document.getElementById(“menu”);
var menuA = menu.getElementsByTagName(“a”);
for ( var i = 0; i<menuA.length; i++ ) {
menuA[i].onclick=function(e){
this.style.background="red";
return false;
}
}
@QiQiBoY 嗯。我也在摸索中哈。感谢提示。那段代码本来就是错的,关于这个效果的实现你有什么更好的方法还请指教呀!
好久没有过来了,文章写的不错!
查看了一下效果,很不错
将要学习wp的模板制作,以后也会接触css的
拿过去测试下
支持一下,希望网站办得越来越好
文章写得非常好,怀安学习了,以后会经常来光顾。
我是一个代码忙。
我是一个代码盲
js实在是很强大,无奈我是一点都不懂,呵呵
其实这个时候最合适的不是js处理,而是后台直接把相关class参数传过去,因为页面有刷新的机会何不让后台代码直接搞定呢~
@gonghao 呵呵。后台说他搞不定哈。
现在静不下心看这些了..
@安 等能静下心来的时候看哈^!^
呵呵,看来有很多人都关心你,找到工作了。继续忙吧。有很多烦心事就要来了。在北京闯荡,不容易。
@KYO 哈哈。还好吧,谢谢关心。什么时候改的名字我都不知道哈。好久没去你那里了哦。
这方法不错,学习一下,可以省去后台脚本写标识的代码了。
好看,嘿嘿。我来了,鄙视一下前几楼,不让我抢沙发
@林西老九 呵呵。这个怪我没经常更新,被沙发的机率是低了点哈。
步骤很详细,谢谢啦
呵呵,不错的方法,下次说不定用得上O(∩_∩)O~
找到工作啦?
@追梦 嗯。都上了两周班了哈。
如果加上cookies可以动态改变样式
哥们儿栖息在北京哪里了
@飞晏 呵呵。在呢,刚在一家公司工作了有两周!