结构/表现/行为完全分离的tab选项卡JS版(转)

 1 <style type="text/css"> 
 2 /*reset css*/
 3 body{font-size:0.8em;letter-spacing:1px;font-family:"Microsoft YaHei"; line-height:1.8em}
 4 div,h2,p,ul,li{margin:0;padding:0}
 5 h1{font-size:1em; font-weight:normal;}
 6 h1 a{background:#047; padding:2px 3px; color:#fff; text-decoration:none;}
 7 h1 a:hover{background:#a40000; color:#fff; text-decoration:underline}
 8 h3{color:#888; font-weight:bold;font-size:1em; margin:1em auto; position:relative}
 9 /*demo css*/
10 h2{width:120px; height:25px;background:#a40000;font-size:12px; color:#fff;text-align:center; ;line-height:25px;margin:30px 0 10px}
11 
12 ul#tabnav{width:500px;height:25px;margin-left:100px}
13 ul#tabnav li{background:#baf;color:#fff;line-height:25px;display:block;float:left;margin:0 10px;padding:0 5px;cursor:pointer}
14 ul#tabnav li.hover{background:#047}
15 #tabbox{width:500px;height:100%;border:2px solid #047}
16 #tabbox div{margin:10px;line-height:20px}
17 </style> 

 1 <script type="text/javascript"> 
 2 window.onload=function(){
 3     var tabnav=document.getElementById('tabnav');
 4     var list=tabnav.getElementsByTagName('li');
 5     var tabbox=document.getElementById('tabbox');
 6     var divs=tabbox.getElementsByTagName('div');
 7     var hover='hover';//当前点击显示的样式
 8     var indexValue=function(self,obj){//获取索引值的函数,通过它获取当前点击在导航中的索引位置
 9         for(var i=0;i<obj.length;i++){
10             if(obj[i]==self) return i;
11         }
12     };
13     var index;
14     list[0].className=hover;//第一个默认高亮,建议在页面中直接定义
15     for(var k=1;k<divs.length;k++){//我为了省事,用一个for循环定义默认显示第一个切换区块,其他隐藏.这个最好用CSS定义,能避免页面加载时它全部显示出来.
16         divs[k].style.display='none';
17     }
18     for(var l=0;l<list.length;l++){//点击事件
19         list[l].onclick=function(){
20             index=indexValue(this,list);//利用前面定义的indexValue函数取当前点击在选项导航中的索引值,
21             for(var m=0;m<list.length;m++){
22                 list[m].className= (m==index) ? hover : '';//高亮显示点击项并移除其他项高亮
23             }
24             for(var n=0;n<divs.length;n++){
25                 divs[n].style.display= (n==index) ? 'block' : 'none';//显示点击对应的选项区,隐藏其他
26             }
27         }
28     }
29 }
30 </script> 

 1 <ul id="tabnav"> 
 2     <li>jQuery技术</li> 
 3     <li>CSS技术</li> 
 4     <li>xhtml技术</li> 
 5 </ul> 
 6 <div id="tabbox"> 
 7     <div>jQuery技术在这里显示!@Mr.Think.<br /><img src="http://img.ffffound.com/static-data/assets/6/644432cc1eac546463ff2a9ebefc2e81cc861961_m.jpg" /></div> 
 8     <div>CSS技术在这里显示!@Mr.Think.<br /><img src="http://img.ffffound.com/static-data/assets/6/8bd0ae01d96d6caad52ac97044e526edb6bf52f7_m.jpg" /></div> 
 9     <div>xhtml技术在这里显示!@Mr.Think.<br /><img src="http://img.ffffound.com/static-data/assets/6/34aff353e8a0c93b1826170035fb8ed6d9de9933_m.png"  /></div> 
10 </div> 

http://www.cnblogs.com/mrthink/archive/2010/08/13/1799309.html 

原文地址:https://www.cnblogs.com/chixiaojin/p/1799946.html