<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>兼容性好的TAB选项卡(IE,FF,Opera,Safari,Chrome)</title>
<style type="text/css">
#tab_container1{width:600px;text-align:left;}
.cls_tab_nav{height:26px;overflow:hidden;font-size:12px;text-align:left;background:url(images/line_bg.jpg) repeat-x bottom;}
.cls_tab_nav ul{font-size:9pt;margin:0;padding:0;}
.cls_tab_nav_li{background:url(images/tab_bg.jpg) no-repeat -157px 0;width:157px;height:26px;line-height:26px;float:left;display:inline;overflow:hidden;text-align:center;cursor:pointer;}
.cls_tab_nav_li_first{background-position:0px 0px;}
.cls_tab_nav_li a{text-decoration:none;color:#555;font-size:12px;}
.cls_tab_body{border:1px solid #FFAE1E;border-top:none;min-height:260px;padding:20px;}
.cls_div{display:none;font-size:14px;}/*新添样式*/
.cls_tab_body .cls_div li{list-style:none; width:203px;padding:5px 0;padding-left:5px;text-align:left;background:#ffffff; word-wrap:break-word;word-break:normal; list-style:none; list-style-image:url(images/li.gif);}
.cls_tab_body .cls_div li.colorful{background:#eeeeee;}
.cls_tab_body .cls_div li.contents{background:#000000;color:#ffffff;display:none;}
.cls_tab_body .cls_div li.hide{display:none;}
.cls_tab_body .cls_div li.show{display:block;}
</style>
</head>
<body>
<div id="tab_container1">
<div class="cls_tab_nav">
<ul>
<li class="cls_tab_nav_li cls_tab_nav_li_first"><a href="/">淘气榜</a></li>
<li class="cls_tab_nav_li"><a href="/sort/list_1_1.shtml">好评榜</a></li>
<li class="cls_tab_nav_li"><a href="#">其它</a></li>
</ul>
</div>
<div class="cls_tab_body">
<div class="cls_div" style="display:block;">tab选项卡</div>
<div class="cls_div">
<ul>
<li id='l1' class="colorful">1.美特斯邦威,不走寻常路</li>
<li id='l11' class="contents" ><img src="images/mst.gif" alt="美斯特"/>1.美特斯邦威,不走寻常路美特斯邦威,不走寻常路美特斯邦威,不走寻常路美特斯邦威</li>
<li id='l2' >2.关键时刻,我只信赖诺基亚</li>
<li id='l21' class="contents">2.关键时刻,我只信赖诺基亚关键时刻,我只信赖诺基亚关键时刻,我只信赖诺基亚关键时刻,</li>
<li id='l3' class="colorful">3.DHC妆前平整乳太棒了</li>
<li id='l31' class="contents">3.DHC妆前平整乳太棒了DHC妆前平整乳太棒了DHC妆前平整乳太棒了</li>
<li id='l4'>4.李宁,中国的名族魂</li>
<li id='l41' class="contents">4.李宁,中国的名族魂李宁,中国的名族魂李宁,中国的名族魂</li>
<li id='l5' class="colorful">5.波导手机,手机中的战斗机</li>
<li id='l51' class="contents">5.波导手机,手机中的战斗机波导手机,手机中的战斗波导手机,手机中的战斗波导手机,手机中的战斗三</li>
<li id='l6'>6.王老吉,不是一般的喜欢你</li>
<li id='l61' class="contents">6.王老吉,不是一般的喜欢你王老吉,不是一般的喜欢你王老吉,不是一般的喜欢你王老吉,不是一般的喜欢你</li>
<li id='l7' class="colorful">7.雅芳,我觉得真不错</li>
<li id='l71' class="contents">7.雅芳,我觉得真不错雅芳,我觉得真不错雅芳,我觉得真不错雅芳,我觉得真不错</li>
<li id='l8'>8.不得不赞,移动客服</li>
<li id='l81' class="contents">8.不得不赞,移动客服不得不赞,移动客服不得不赞,移动客服不得不赞,移动客服不得不赞,移动客服</li>
</ul>
</div>
<div class="cls_div">其它内容/</div>
</div>
</div>
<script type="text/javascript">
try
{
document.execCommand("BackgroundImageCache", false, true);
}
catch(e){}
//获取某个元素对象
function $(element)
{
if(arguments.length>1)
{
for(var i=0,elements=[],length=arguments.length;i<length;i++)
elements.push($(arguments[i]));
return elements;
}
if(typeof element=="string")
{
return document.getElementById(element);
}
else
{
return element;
}
}
//创建一个函数对象
var Class=
{
create:function()
{
return function()
{
this.initialize.apply(this,arguments);
}
}
}
//实现对象的继承
Object.extend=function(destination,source)
{
for(var property in source)
{
destination[property]=source[property];
}
return destination;
}
/*新增方法*/
//为元素添加新的元素的class属性
function hasClass(element, className)
{
var reg = new RegExp('(\\s|^)'+className+'(\\s|$)');
return element.className.match(reg);
}
var addClass = function(elem, className) {
if ((" " + elem.className + " ").indexOf(" " + className + " ") == -1) {
if (elem.className == "") {
elem.className = className;
} else {
elem.className += (" " + className);
}
}
};
/*function addClass(element, className)
{
if (!this.hasClass(element, className))
{
element.className += " "+className;
}
} */
function removeClass(element, className)
{
if (hasClass(element, className))
{
var reg = new RegExp('(\\s|^)'+className+'(\\s|$)');
element.className = element.className.replace(reg,' ');
}
} //为某一元素添加事件
var addEvent = function(elem, eventName, handler) {
if (elem.addEventListener) {
elem.addEventListener(eventName, handler, false);
} else if (elem.attachEvent) {
elem.attachEvent("on" + eventName, handler);
}
};
//创建tab选项卡对象
var tabMenu=Class.create();
tabMenu.prototype={
initialize:function(container,selfOpt,otherOpt){
this.container=$(container);
var selfOptions=Object.extend({fontWeight:"bold",fontSize:"12px",color:"#FFBC44"},selfOpt||{});
var otherOptions=Object.extend({fontWeight:"normal",fontSize:"12px",color:"#666"},otherOpt||{});
//用for循环得到objs数组,主要是为了兼容非IE浏览器把空白也当作子对象
for(var i=0,length=this.container.childNodes.length,objs=[];i<length;i++)
{
if(this.container.childNodes[i].nodeType==1)
objs.push(this.container.childNodes[i]);
}
var tabArray=objs[0].getElementsByTagName("li");
//用for循环得到divArray数组,主要是为了兼容非IE浏览器把空白也当作子对象
var divArray=new Array();
for(i=0,length=objs[1].childNodes.length;i<length;i++)
{
if(objs[1].childNodes[i].nodeType==1)
divArray.push(objs[1].childNodes[i]);
}
//用for循环得到liArray
var liArray=objs[1].childNodes[1].getElementsByTagName("li");
/*var liArray=new Array();
for(i=0,length=objs[1].childNodes[1].childNodes[0].childNodes.length;i<length;i++)
{
if(objs[1].childNodes[1].childNodes[0].childNodes[i].nodeType==1)
{
liArray.push(objs[1].childNodes[1].childNodes[0].childNodes[i]);
}
}*/
alert(liArray.length);
for(i=0,length=liArray.length;i<length;i++)
{
addEvent(liArray[i],"mouseover",function(){alert("sfsdfsdf")});
liArray[i].length=length;
liArray[i].index=i;
if(i%2==0)
{
liArray[i].onmouseover=function(e)
{
var thisid=this.id;
var li=document.getElementById(thisid);
var li_color=document.getElementById(thisid+"1");
addClass(li,"hide");
addClass(li_color,"show");
};
liArray[i].onmouseout=function()
{
var thisid=this.id;
var li=document.getElementById(thisid);
var li_color=document.getElementById(thisid+"1");
/*alert(li);
alert(li_color);*/
removeClass(li,"hide");
removeClass(li_color,"show");
}
}
} for(i=0,length=tabArray.length;i<length;i++)
{
tabArray[i].length=length;
tabArray[i].index=i;
tabArray[i].onmouseover=function()
{
//其它选项卡样式设置
for(var j=0;j<this.length;j++)
{
tabArray[j].style.backgroundPosition="-"+tabArray[j].offsetWidth+"px 0";
for(var property in selfOptions)
{
tabArray[j].firstChild.style[property]=otherOptions[property];
}
}
//当前选项卡样式
this.style.backgroundPosition="0 0";
for(var property in selfOptions)
{
this.firstChild.style[property]=selfOptions[property];
/*
注意this.style.property和selfOptions.property的用法错误
style.fontWeight正确
style["fontWeight"]正确
style["font-weight"]错误
*/
}
//隐藏其它选项卡
for(j=0;j<this.length;j++)
{
divArray[j].style.display="none";
}
//显示当前选项卡
divArray[this.index].style["display"]="block";
}
}
}
}var tab1=new tabMenu("tab_container1",{fontSize:"14px",color:"#FFBC44",fontWeight:"bold"},{fontWeight:"normal",color:"#666"});
</script>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>兼容性好的TAB选项卡(IE,FF,Opera,Safari,Chrome)</title>
<style type="text/css">
#tab_container1{width:600px;text-align:left;}
.cls_tab_nav{height:26px;overflow:hidden;font-size:12px;text-align:left;background:url(images/line_bg.jpg) repeat-x bottom;}
.cls_tab_nav ul{font-size:9pt;margin:0;padding:0;}
.cls_tab_nav_li{background:url(images/tab_bg.jpg) no-repeat -157px 0;width:157px;height:26px;line-height:26px;float:left;display:inline;overflow:hidden;text-align:center;cursor:pointer;}
.cls_tab_nav_li_first{background-position:0px 0px;}
.cls_tab_nav_li a{text-decoration:none;color:#555;font-size:12px;}
.cls_tab_body{border:1px solid #FFAE1E;border-top:none;min-height:260px;padding:20px;}
.cls_div{display:none;font-size:14px;}/*新添样式*/
.cls_tab_body .cls_div li{list-style:none; width:203px;padding:5px 0;padding-left:5px;text-align:left;background:#ffffff; word-wrap:break-word;word-break:normal; list-style:none; list-style-image:url(images/li.gif);}
.cls_tab_body .cls_div li.colorful{background:#eeeeee;}
.cls_tab_body .cls_div li.contents{background:#000000;color:#ffffff;display:none;}
.cls_tab_body .cls_div li.hide{display:none;}
.cls_tab_body .cls_div li.show{display:block;}
</style>
</head>
<body>
<div id="tab_container1">
<div class="cls_tab_nav">
<ul>
<li class="cls_tab_nav_li cls_tab_nav_li_first"><a href="/">淘气榜</a></li>
<li class="cls_tab_nav_li"><a href="/sort/list_1_1.shtml">好评榜</a></li>
<li class="cls_tab_nav_li"><a href="#">其它</a></li>
</ul>
</div>
<div class="cls_tab_body">
<div class="cls_div" style="display:block;">tab选项卡</div>
<div class="cls_div">
<ul>
<li id='l1' class="colorful">1.美特斯邦威,不走寻常路</li>
<li id='l11' class="contents" ><img src="images/mst.gif" alt="美斯特"/>1.美特斯邦威,不走寻常路美特斯邦威,不走寻常路美特斯邦威,不走寻常路美特斯邦威</li>
<li id='l2' >2.关键时刻,我只信赖诺基亚</li>
<li id='l21' class="contents">2.关键时刻,我只信赖诺基亚关键时刻,我只信赖诺基亚关键时刻,我只信赖诺基亚关键时刻,</li>
<li id='l3' class="colorful">3.DHC妆前平整乳太棒了</li>
<li id='l31' class="contents">3.DHC妆前平整乳太棒了DHC妆前平整乳太棒了DHC妆前平整乳太棒了</li>
<li id='l4'>4.李宁,中国的名族魂</li>
<li id='l41' class="contents">4.李宁,中国的名族魂李宁,中国的名族魂李宁,中国的名族魂</li>
<li id='l5' class="colorful">5.波导手机,手机中的战斗机</li>
<li id='l51' class="contents">5.波导手机,手机中的战斗机波导手机,手机中的战斗波导手机,手机中的战斗波导手机,手机中的战斗三</li>
<li id='l6'>6.王老吉,不是一般的喜欢你</li>
<li id='l61' class="contents">6.王老吉,不是一般的喜欢你王老吉,不是一般的喜欢你王老吉,不是一般的喜欢你王老吉,不是一般的喜欢你</li>
<li id='l7' class="colorful">7.雅芳,我觉得真不错</li>
<li id='l71' class="contents">7.雅芳,我觉得真不错雅芳,我觉得真不错雅芳,我觉得真不错雅芳,我觉得真不错</li>
<li id='l8'>8.不得不赞,移动客服</li>
<li id='l81' class="contents">8.不得不赞,移动客服不得不赞,移动客服不得不赞,移动客服不得不赞,移动客服不得不赞,移动客服</li>
</ul>
</div>
<div class="cls_div">其它内容/</div>
</div>
</div>
<script type="text/javascript">
try
{
document.execCommand("BackgroundImageCache", false, true);
}
catch(e){}
//获取某个元素对象
function $(element)
{
if(arguments.length>1)
{
for(var i=0,elements=[],length=arguments.length;i<length;i++)
elements.push($(arguments[i]));
return elements;
}
if(typeof element=="string")
{
return document.getElementById(element);
}
else
{
return element;
}
}
//创建一个函数对象
var Class=
{
create:function()
{
return function()
{
this.initialize.apply(this,arguments);
}
}
}
//实现对象的继承
Object.extend=function(destination,source)
{
for(var property in source)
{
destination[property]=source[property];
}
return destination;
}
/*新增方法*/
//为元素添加新的元素的class属性
function hasClass(element, className)
{
var reg = new RegExp('(\\s|^)'+className+'(\\s|$)');
return element.className.match(reg);
}
var addClass = function(elem, className) {
if ((" " + elem.className + " ").indexOf(" " + className + " ") == -1) {
if (elem.className == "") {
elem.className = className;
} else {
elem.className += (" " + className);
}
}
};
/*function addClass(element, className)
{
if (!this.hasClass(element, className))
{
element.className += " "+className;
}
} */
function removeClass(element, className)
{
if (hasClass(element, className))
{
var reg = new RegExp('(\\s|^)'+className+'(\\s|$)');
element.className = element.className.replace(reg,' ');
}
} //为某一元素添加事件
var addEvent = function(elem, eventName, handler) {
if (elem.addEventListener) {
elem.addEventListener(eventName, handler, false);
} else if (elem.attachEvent) {
elem.attachEvent("on" + eventName, handler);
}
};
//创建tab选项卡对象
var tabMenu=Class.create();
tabMenu.prototype={
initialize:function(container,selfOpt,otherOpt){
this.container=$(container);
var selfOptions=Object.extend({fontWeight:"bold",fontSize:"12px",color:"#FFBC44"},selfOpt||{});
var otherOptions=Object.extend({fontWeight:"normal",fontSize:"12px",color:"#666"},otherOpt||{});
//用for循环得到objs数组,主要是为了兼容非IE浏览器把空白也当作子对象
for(var i=0,length=this.container.childNodes.length,objs=[];i<length;i++)
{
if(this.container.childNodes[i].nodeType==1)
objs.push(this.container.childNodes[i]);
}
var tabArray=objs[0].getElementsByTagName("li");
//用for循环得到divArray数组,主要是为了兼容非IE浏览器把空白也当作子对象
var divArray=new Array();
for(i=0,length=objs[1].childNodes.length;i<length;i++)
{
if(objs[1].childNodes[i].nodeType==1)
divArray.push(objs[1].childNodes[i]);
}
//用for循环得到liArray
var liArray=objs[1].childNodes[1].getElementsByTagName("li");
/*var liArray=new Array();
for(i=0,length=objs[1].childNodes[1].childNodes[0].childNodes.length;i<length;i++)
{
if(objs[1].childNodes[1].childNodes[0].childNodes[i].nodeType==1)
{
liArray.push(objs[1].childNodes[1].childNodes[0].childNodes[i]);
}
}*/
alert(liArray.length);
for(i=0,length=liArray.length;i<length;i++)
{
addEvent(liArray[i],"mouseover",function(){alert("sfsdfsdf")});
liArray[i].length=length;
liArray[i].index=i;
if(i%2==0)
{
liArray[i].onmouseover=function(e)
{
var thisid=this.id;
var li=document.getElementById(thisid);
var li_color=document.getElementById(thisid+"1");
addClass(li,"hide");
addClass(li_color,"show");
};
liArray[i].onmouseout=function()
{
var thisid=this.id;
var li=document.getElementById(thisid);
var li_color=document.getElementById(thisid+"1");
/*alert(li);
alert(li_color);*/
removeClass(li,"hide");
removeClass(li_color,"show");
}
}
} for(i=0,length=tabArray.length;i<length;i++)
{
tabArray[i].length=length;
tabArray[i].index=i;
tabArray[i].onmouseover=function()
{
//其它选项卡样式设置
for(var j=0;j<this.length;j++)
{
tabArray[j].style.backgroundPosition="-"+tabArray[j].offsetWidth+"px 0";
for(var property in selfOptions)
{
tabArray[j].firstChild.style[property]=otherOptions[property];
}
}
//当前选项卡样式
this.style.backgroundPosition="0 0";
for(var property in selfOptions)
{
this.firstChild.style[property]=selfOptions[property];
/*
注意this.style.property和selfOptions.property的用法错误
style.fontWeight正确
style["fontWeight"]正确
style["font-weight"]错误
*/
}
//隐藏其它选项卡
for(j=0;j<this.length;j++)
{
divArray[j].style.display="none";
}
//显示当前选项卡
divArray[this.index].style["display"]="block";
}
}
}
}var tab1=new tabMenu("tab_container1",{fontSize:"14px",color:"#FFBC44",fontWeight:"bold"},{fontWeight:"normal",color:"#666"});
</script>
</body>
</html>
解决方案 »
- 动态改变链接字体颜色后链接的悬停效果没有了
- 求点击导航菜单页面跳转新地址后改变前面点的导航菜单的颜色的问题
- js跳转广告,有什么办法屏蔽呀?
- 求助: 如何XML To String
- 求适合初学者的javascript编辑工具
- 怎么能让div宽度固定呢,高难度************************************************
- !!高手进!!怎么才能让asp得到js脚本处理后的结果?
- javascript问题
- <div>实现页面居中 <table>能不能再实现文字左对齐啊。。
- js如何实现内容在微信浏览器中显示
- 请教个问题,如何用jquery来比较时间控件,需要一个判断!
- 这样的字符串,怎么转化为json对象?
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>兼容性好的TAB选项卡(IE,FF,Opera,Safari,Chrome) </title>
<style type="text/css">
#tab_container1{width:600px;text-align:left;}
.cls_tab_nav{height:26px;overflow:hidden;font-size:12px;text-align:left;background:url(images/line_bg.jpg) repeat-x bottom;}
.cls_tab_nav ul{font-size:9pt;margin:0;padding:0;}
.cls_tab_nav_li{background:url(images/tab_bg.jpg) no-repeat -157px 0;width:157px;height:26px;line-height:26px;float:left;display:inline;overflow:hidden;text-align:center;cursor:pointer;}
.cls_tab_nav_li_first{background-position:0px 0px;}
.cls_tab_nav_li a{text-decoration:none;color:#555;font-size:12px;}
.cls_tab_body{border:1px solid #FFAE1E;border-top:none;min-height:260px;padding:20px;}
.cls_div{display:none;font-size:14px;} /*新添样式*/
.cls_tab_body .cls_div li{list-style:none; width:203px;padding:5px 0;padding-left:5px;text-align:left;background:#ffffff; word-wrap:break-word;word-break:normal; list-style:none; list-style-image:url(images/li.gif);}
.cls_tab_body .cls_div li.colorful{background:#eeeeee;}
.cls_tab_body .cls_div li.contents{background:#000000;color:#ffffff;display:none;}
.cls_tab_body .cls_div li.hide{display:none;}
.cls_tab_body .cls_div li.show{display:block;}
</style>
</head>
<body>
<div id="tab_container1">
<div class="cls_tab_nav">
<ul>
<li class="cls_tab_nav_li cls_tab_nav_li_first"> <a href="/">淘气榜 </a> </li>
<li class="cls_tab_nav_li"> <a href="/sort/list_1_1.shtml">好评榜 </a> </li>
<li class="cls_tab_nav_li"> <a href="#">其它 </a> </li>
</ul>
</div>
<div class="cls_tab_body">
<div class="cls_div" style="display:block;">tab选项卡 </div>
<div class="cls_div">
<ul>
<li id='l1' class="colorful">1.美特斯邦威,不走寻常路 </li>
<li id='l11' class="contents" > <img src="images/mst.gif" alt="美斯特"/>1.美特斯邦威,不走寻常路美特斯邦威,不走寻常路美特斯邦威,不走寻常路美特斯邦威 </li>
<li id='l2' >2.关键时刻,我只信赖诺基亚 </li>
<li id='l21' class="contents">2.关键时刻,我只信赖诺基亚关键时刻,我只信赖诺基亚关键时刻,我只信赖诺基亚关键时刻, </li>
<li id='l3' class="colorful">3.DHC妆前平整乳太棒了 </li>
<li id='l31' class="contents">3.DHC妆前平整乳太棒了DHC妆前平整乳太棒了DHC妆前平整乳太棒了 </li>
<li id='l4'>4.李宁,中国的名族魂 </li>
<li id='l41' class="contents">4.李宁,中国的名族魂李宁,中国的名族魂李宁,中国的名族魂 </li>
<li id='l5' class="colorful">5.波导手机,手机中的战斗机 </li>
<li id='l51' class="contents">5.波导手机,手机中的战斗机波导手机,手机中的战斗波导手机,手机中的战斗波导手机,手机中的战斗三 </li>
<li id='l6'>6.王老吉,不是一般的喜欢你 </li>
<li id='l61' class="contents">6.王老吉,不是一般的喜欢你王老吉,不是一般的喜欢你王老吉,不是一般的喜欢你王老吉,不是一般的喜欢你 </li>
<li id='l7' class="colorful">7.雅芳,我觉得真不错 </li>
<li id='l71' class="contents">7.雅芳,我觉得真不错雅芳,我觉得真不错雅芳,我觉得真不错雅芳,我觉得真不错 </li>
<li id='l8'>8.不得不赞,移动客服 </li>
<li id='l81' class="contents">8.不得不赞,移动客服不得不赞,移动客服不得不赞,移动客服不得不赞,移动客服不得不赞,移动客服 </li>
</ul>
</div>
<div class="cls_div">其它内容/ </div>
</div>
</div>
<script type="text/javascript">
try
{
document.execCommand("BackgroundImageCache", false, true);
}
catch(e){}
//获取某个元素对象
function $(element)
{
if(arguments.length>1)
{
for(var i=0,elements=[],length=arguments.length;i <length;i++)
elements.push($(arguments[i]));
return elements;
}
if(typeof element=="string")
{
return document.getElementById(element);
}
else
{
return element;
}
}
//创建一个函数对象
var Class=
{
create:function()
{
return function()
{
this.initialize.apply(this,arguments);
}
}
}
//实现对象的继承
Object.extend=function(destination,source)
{
for(var property in source)
{
destination[property]=source[property];
}
return destination;
}
/*新增方法*/
//为元素添加新的元素的class属性
function hasClass(element, className)
{
var reg = new RegExp('(\\s|^)'+className+'(\\s|$)');
return element.className.match(reg);
}
var addClass = function(elem, className) {
if ((" " + elem.className + " ").indexOf(" " + className + " ") == -1) {
if (elem.className == "") {
elem.className = className;
} else {
elem.className += (" " + className);
}
}
};
/*function addClass(element, className)
{
if (!this.hasClass(element, className))
{
element.className += " "+className;
}
} */
function removeClass(element, className)
{
if (hasClass(element, className))
{
var reg = new RegExp('(\\s|^)'+className+'(\\s|$)');
element.className = element.className.replace(reg,' ');
}
} //为某一元素添加事件
var addEvent = function(elem, eventName, handler) {
if (elem.addEventListener) {
elem.addEventListener(eventName, handler, false);
} else if (elem.attachEvent) {
elem.attachEvent("on" + eventName, handler);
}
};
//创建tab选项卡对象
var tabMenu=Class.create();
tabMenu.prototype={
initialize:function(container,selfOpt,otherOpt){
this.container=$(container);
var selfOptions=Object.extend({fontWeight:"bold",fontSize:"12px",color:"#FFBC44"},selfOpt||{});
var otherOptions=Object.extend({fontWeight:"normal",fontSize:"12px",color:"#666"},otherOpt||{});
//用for循环得到objs数组,主要是为了兼容非IE浏览器把空白也当作子对象
for(var i=0,length=this.container.childNodes.length,objs=[];i <length;i++)
{
if(this.container.childNodes[i].nodeType==1)
objs.push(this.container.childNodes[i]);
}
var tabArray=objs[0].getElementsByTagName("li");
//用for循环得到divArray数组,主要是为了兼容非IE浏览器把空白也当作子对象
var divArray=new Array();
for(i=0,length=objs[1].childNodes.length;i <length;i++)
{
if(objs[1].childNodes[i].nodeType==1)
divArray.push(objs[1].childNodes[i]);
}
//用for循环得到liArray
var liArray=objs[1].childNodes[1].getElementsByTagName("li");
/*var liArray=new Array();
for(i=0,length=objs[1].childNodes[1].childNodes[0].childNodes.length;i <length;i++)
{
if(objs[1].childNodes[1].childNodes[0].childNodes[i].nodeType==1)
{
liArray.push(objs[1].childNodes[1].childNodes[0].childNodes[i]); }
}*/
alert(liArray.length); for(i=0,length=liArray.length;i <length;i++)
{
addEvent(liArray[i],"mouseover",function(){alert("sfsdfsdf")});
liArray[i].length=length;
liArray[i].index=i;
if(i%2==0)
{
liArray[i].onmouseover=function(e)
{
var thisid=this.id;
var li=document.getElementById(thisid);
var li_color=document.getElementById(thisid+"1");
addClass(li,"hide");
addClass(li_color,"show"); }; liArray[i].onmouseout=function()
{
var thisid=this.id;
var li=document.getElementById(thisid);
var li_color=document.getElementById(thisid+"1");
/*alert(li);
alert(li_color);*/
removeClass(li,"hide");
removeClass(li_color,"show"); }
}
} for(i=0,length=tabArray.length;i <length;i++)
{
tabArray[i].length=length;
tabArray[i].index=i;
var nodeE,nodeE2;
tabArray[i].onmouseover=function()
{
//其它选项卡样式设置
for(var j=0;j <this.length;j++)
{
tabArray[j].style.backgroundPosition="-"+tabArray[j].offsetWidth+"px 0";
for(var property in selfOptions)
{
nodeE = tabArray[j].firstChild;
while(nodeE.nodeType != 1){
nodeE = nodeE.nextSibling;
}
//nodeE.style.backgroundColor = "red"
nodeE.style[property]=otherOptions[property];
}
}
//当前选项卡样式
this.style.backgroundPosition="0 0";
for(var property in selfOptions)
{
nodeE2 = this.firstChild;
while(nodeE2.nodeType != 1){
nodeE2 = nodeE2.nextSibling;
}
nodeE2.style[property]=selfOptions[property];
/*
注意this.style.property和selfOptions.property的用法错误
style.fontWeight正确
style["fontWeight"]正确
style["font-weight"]错误
*/
}
//隐藏其它选项卡
for(j=0;j <this.length;j++)
{
divArray[j].style.display="none";
}
//显示当前选项卡
divArray[this.index].style["display"]="block";
}
}
}
} var tab1=new tabMenu("tab_container1",{fontSize:"14px",color:"#FFBC44",fontWeight:"bold"},{fontWeight:"normal",color:"#666"});
</script>
</body>
</html>
FF下会把换行也认为是一个节点 所以如果下面这样
<ul>
<li></li>这里 ul.firstChild可能是#text(一个\n) 这时你调用 ul.firstChild.style.就会报错...
执行的结果也不一定是你想要的
样式 数据 全不要
这样调试方便还有现在底层的JS操作 推荐用现成的JS框架 比如jquery什么的 不要自己实现DOM操作了 自己写的话 光浏览器的兼容就很浪费时间