今天研究了下javascript tab代码 到网上看了下 然后自己封装了一个tab组件 本来用jquery写tab是非常简单的事件 但是在做淘宝页面时候 淘宝现在不允许用jquery框架 哇靠 一定要用kissy框架 我就便不用 靠 我直接用javascript写 这应该没有错吧!靠 废话少说!还是要引用上次翻译的一段js 那段js有一个方法是 获取类名的封装方法!如下:
- <script>
- var GLOBAL = {};
- GLOBAL.namespace=function(str){
- var arr = str.split("."),o = GLOBAL;
- for (i=(arr[0]=="GLOBAL")?1:0;i<arr.length;i++){
- o[arr[i]] = o[arr[i]] || {};
- o=o[arr[i]];
- }
- }
- GLOBAL.namespace("DOM");
- GLOBAL.DOM.getElementsByClassName = function(str,root,tag){
- if(root){
- root = typeof root =="string" ? document.getElementById(root) : root;
- }else{
- root = document.body;
- }
- tag = tag || "*";
- var els = document.getElementsByTagName(tag),arr=[];
- for(var i=0,n=els.length;i<n;i++){
- for(var j=0,k=els[i].className.split(" "),l=k.length;j<l;j++){
- if(k[j]==str){
- arr.push(els[i]);
- break;
- }
- }
- }
- return arr;
- }
- </script>
因为原审js是没有这个方法 只有封装下呢!下面是js代码:
- <script>
- function tabPlug(TabMenu,TabContent){
- var list1 = GLOBAL.DOM.getElementsByClassName(TabMenu),
- c1 = GLOBAL.DOM.getElementsByClassName(TabContent);
- var hover = "hover"; //当点击时增加一个类
- //下面是写个函数来获取索引值的函数,通过它获取当前点击在导航中的索引位置
- var indexValue = function(self,obj){
- for(var i=0;i<obj.length;i++){
- if(obj[i] == self) return i;
- }
- }
- var index; //定于一个变量 来保存当前的索引
- list1[0].className = hover; //给第一个列表项添加一个类名
- for(var j=1;j<c1.length;j++){
- c1[j].style.display = "none";
- }
- for(var k=0;k<list1.length;k++){
- list1[k].onclick = function(){
- index = indexValue(this,list1);
- for(var m=0;m<list1.length;m++){
- list1[m].className = (m==index) ? hover : "";//高亮显示点击项并移除其他项高亮
- }
- for(var n=0;n<c1.length;n++){
- c1[n].style.display = (n==index) ? "block" : "none";//显示点击对应的选项区,隐藏其他
- }
- }
- }
- }
- </script>
这个js不怎么难理解 我知道你们都ok的 所以也没有什么必要解析!上面也有点注释!
所有代码如下:
- <!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=utf-8" />
- <title>无标题文档</title>
- <style>
- .tabnav{width:500px;height:25px;margin-left:100px; overflow:hidden;}
- .tabnav li{background:#baf;color:#fff;line-height:25px;display:block;float:left;margin:0 10px;padding:0 5px;cursor:pointer}
- .tabnav li.hover{background:#047}
- .tabbox{width:500px;border:2px solid #047; overflow:hidden;}
- .tabbox div{margin:10px;line-height:20px}
- .tabbox .hide{ display:none;}
- .tabnav2{width:500px;height:25px;margin-left:100px; overflow:hidden;}
- .tabnav2 li{background:#baf;color:#fff;line-height:25px;display:block;float:left;margin:0 10px;padding:0 5px;cursor:pointer}
- .tabnav2 li.hover{background:#047}
- .tabbox2{width:500px;border:2px solid #047; overflow:hidden;}
- .tabbox2 div{margin:10px;line-height:20px}
- .tabbox2 .hide{ display:none;}
- </style>
- <script>
- var GLOBAL = {};
- GLOBAL.namespace=function(str){
- var arr = str.split("."),o = GLOBAL;
- for (i=(arr[0]=="GLOBAL")?1:0;i<arr.length;i++){
- o[arr[i]] = o[arr[i]] || {};
- oo=o[arr[i]];
- }
- }
- GLOBAL.namespace("DOM");
- GLOBAL.DOM.getElementsByClassName = function(str,root,tag){
- if(root){
- root = typeof root =="string" ? document.getElementById(root) : root;
- }else{
- root = document.body;
- }
- tagtag = tag || "*";
- var els = document.getElementsByTagName(tag),arr=[];
- for(var i=0,n=els.length;i<n;i++){
- for(var j=0,k=els[i].className.split(" "),l=k.length;j<l;j++){
- if(k[j]==str){
- arr.push(els[i]);
- break;
- }
- }
- }
- return arr;
- }
- </script>
- </head>
- <body>
- <ul class="tabnav">
- <li class="list1">jQuery技术</li>
- <li class="list1">CSS技术</li>
- <li class="list1">xhtml技术</li>
- </ul>
- <div class="tabbox">
- <div class="c1"><img src="http://img.ffffound.com/static-data/assets/6/644432cc1eac546463ff2a9ebefc2e81cc861961_m.jpg" /></div>
- <div class="c1 hide"><img src="http://img.ffffound.com/static-data/assets/6/8bd0ae01d96d6caad52ac97044e526edb6bf52f7_m.jpg" /></div>
- <div class="c1 hide"><img src="http://img.ffffound.com/static-data/assets/6/34aff353e8a0c93b1826170035fb8ed6d9de9933_m.png" /></div>
- </div>
- <br /><br />
- <ul class="tabnav">
- <li class="list2">jQuery技术</li>
- <li class="list2">CSS技术</li>
- <li class="list2">xhtml技术</li>
- </ul>
- <div class="tabbox">
- <div class="c2"><img src="http://img.ffffound.com/static-data/assets/6/644432cc1eac546463ff2a9ebefc2e81cc861961_m.jpg" /></div>
- <div class="c2 hide"><img src="http://img.ffffound.com/static-data/assets/6/8bd0ae01d96d6caad52ac97044e526edb6bf52f7_m.jpg" /></div>
- <div class="c2 hide"><img src="http://img.ffffound.com/static-data/assets/6/34aff353e8a0c93b1826170035fb8ed6d9de9933_m.png" /></div>
- </div>
- <script>
- function tabPlug(TabMenu,TabContent){
- var list1 = GLOBAL.DOM.getElementsByClassName(TabMenu),
- c1 = GLOBAL.DOM.getElementsByClassName(TabContent);
- var hover = "hover"; //当点击时增加一个类
- //下面是写个函数来获取索引值的函数,通过它获取当前点击在导航中的索引位置
- var indexValue = function(self,obj){
- for(var i=0;i<obj.length;i++){
- if(obj[i] == self) return i;
- }
- }
- var index; //定于一个变量 来保存当前的索引
- list1[0].className = hover; //给第一个列表项添加一个类名
- for(var j=1;j<c1.length;j++){
- c1[j].style.display = "none";
- }
- for(var k=0;k<list1.length;k++){
- list1[k].onclick = function(){
- index = indexValue(this,list1);
- for(var m=0;m<list1.length;m++){
- list1[m].className = (m==index) ? hover : "";//高亮显示点击项并移除其他项高亮
- }
- for(var n=0;n<c1.length;n++){
- c1[n].style.display = (n==index) ? "block" : "none";//显示点击对应的选项区,隐藏其他
- }
- }
- }
- }
- </script>
- <script>
- tabPlug("list1","c1");
- tabPlug("list2","c2");
- </script>
- </body>
- </html>
下面也有压缩包下载 可以看看源码!
本文转自 涂根华 51CTO博客,原文链接:http://blog.51cto.com/tugenhua/744534,如需转载请自行联系原作者