奇或偶数行高亮显示及鼠标莫过高亮显示,一个经常用到的效果,也能谷歌到大把的这种效果JS,但好像还没有一个封装成类直接用的.想象自己当初谷歌这个类时,还真没少折腾时间.
花了点时间,封装成了一个类(附带一个添加样式的类),适合初学者,直接调用函数即可,无需改代码.
核心JavaScript代码:点此查看DEMO
//@Mr.Think---添加样式的类
function addClass(elem, value){
if (!elem.className) {
elem.className = value;
}
else {
var newClass = elem.className;
newClass += " ";
newClass += value;
elem.className = newClass;
}
}
//@Mr.Think---奇或偶数行高亮显示及鼠标划过高亮显示
function highLight(elemid, tagName, tagNameHighClass, crossTagNameClass){
if (!document.getElementsByTagName)
return false;
if (!document.getElementById)
return false;
if (!document.getElementById(elemid))
return false;
var elemid = document.getElementById(elemid);
tagNames = elemid.getElementsByTagName(tagName);
//奇数行高亮显示
var odd = true;//它的值决定是奇数高亮显示还是偶数高亮显示
for (var i = 0; i < tagNames.length; i++) {
if (odd == true) {
addClass(tagNames[i], tagNameHighClass)
odd = false;
}
else {
odd = true;
}
}
//鼠标划过高亮显示
for (var m = 0; m < tagNames.length; m++) {
tagNames[m].oldClassName = tagNames[m].className;
tagNames[m].onmouseover = function(){
addClass(this, crossTagNameClass);
}
tagNames[m].onmouseout = function(){
this.className = this.oldClassName;
}
}
}
参数说明:
1.elemid:事件ID,就是你想实现这种效果所在ID;
2.tagName:事件tagName值,比如li,tr,p等等;
3.tagNameHighClass:奇或偶数行高亮显示的样式;
4.crossTagNameClass:鼠标划过时高亮显示的样式.
2.tagName:事件tagName值,比如li,tr,p等等;
3.tagNameHighClass:奇或偶数行高亮显示的样式;
4.crossTagNameClass:鼠标划过时高亮显示的样式.
使用说明:
1.如果你只想要其中一个效果,在类中,删除对应的不需要的代码,有注释;
2.调用(加载函数建议用本文中的加载函数,用window.onload非明智之举):
2.调用(加载函数建议用本文中的加载函数,用window.onload非明智之举):
window.onload = function highYourElem(){
highLight("yourId", "yourTagName", "yourHighClass", "yourCrossClass");
}
用Css也 可以 实现
[回复]
不知道为什么,你这个例子我拿过去功能可以实现
但是我拿到自己的页面上就没有效果,也没有报错
[回复]
Mr.Think 回复:
十二月 23rd, 2010 at 13:01
@s, 哈~ 断点调一下嘛.. 看是不是哪儿没执行.. 或者样式是不是有问题..
[回复]
恩,这个比较好~
[回复]
i%2==0
这样不是效果更好些吗?
[回复]
Mr.Think 回复:
五月 17th, 2010 at 20:57
@方域, 嗯,判断余数的方法也挺好.实现奇偶高亮的方法有很多种.:)
[回复]
web前端寒风 回复:
八月 4th, 2010 at 18:31
@方域, 我曾经就是这种方法实现的,不知是否有什么缺点
[回复]
Mr.Think 回复:
八月 4th, 2010 at 19:30
@web前端寒风, 道理是一样的.个人觉得没有不妥.但如果你接触了jQ,你会发现隔行高亮显示仅一句代码的就可实现.
[回复]