tab

jquery代码如下:

html代码:

	<ul class="tabs" id="tabs01">
		<li><a href="javascript:void(0)" class="current">tab切换一</a></li>
		<li><a href="javascript:void(0)">tab切换二</a></li>
		<li><a href="javascript:void(0)">tab切换三</a></li>
	</ul>
	<div class="container" id="container01">
		<div class="con">显示内容一</div>
		<div class="con">显示内容二</div>
		<div class="con">显示内容三</div>
	</div> ####jquery代码如下:

    $(function(){ tabs($("#tabs01 a"), $('#container01 .con')); })

下面的代码就是具体实现tabs的函数:

	var tabs = function(tab, con){
    tab.click(function(){
        var indx = tab.index(this);
        tab.removeClass('current');
        $(this).addClass('current');
        con.hide();
        con.eq(indx).show();
    })    
	}

下面js方法:css代码:(公用)

	<style type="text/css"> .wrapper {
		width: 600px;
		height: auto;
		margin: 0 auto;
	}
	p {
		margin: 0;
		padding: 0;
		color: #333333;
		font-family: 宋体;
		font-size: 12px;
	}
	ul {
		margin: 0;
		padding: 0;
		list-style-type: none;
		width: 500px;
		height: 16px;
		border-bottom: #DDDDDD solid 1px;
	}
	li {
		margin: 0;
		padding: 0;
		height: 16px;
		padding-left: 5px;
		padding-right: 10px;
		float: left;
		border-left: #FFFFFF solid 1px;
		border-right: #808080 solid 1px;
		font-family: Verdana, Geneva, sans-serif;
		font-size: 12px;
		color: #000000;
		background-color: #F4F4F4;
		cursor: pointer;
	}
	.one {
		width: 500px;
		padding-top: 20px;
		display: none;
	}
	.blue {
		color: #58A200;
		background-color: #8C5C5C;
	}
	.white {
		color: #000000;
		background-color: #F4F4F4;
	}
	</style>

js方法:

####JS:方法一:

	<script type="text/javascript">
	function showTab(num) {
		for (i = 0; i < 3; i++) {
			document.getElementById("tab" + i).style.display = "none";
			document.getElementById("id" + i).className = "white";
		}
		document.getElementById("tab" + num).style.display = "block";
		document.getElementById("id" + num).className = "blue";
	}
	</script>

在这里先把tab0, tab1, tab2都设置成display:none, class属性为white, 然后再根据所传参数来设置成display:block, class为blue方法一的HTML:

	<div class="wrapper">
	<ul>
		<li id="id0" onclick="showTab(0)" class="blue">Javascript</li>
		<li id="id1" onclick="showTab(1)">Action Script</li>
		<li id="id2" onclick="showTab(2)">Photoshop</li>
	</ul>
	<div class="one" id="tab0" style="display:block">
		<p> </p>
	</div>
	<div class="one" id="tab1">
		<p></p>
	</div>
	<div class="one" id="tab2">
		<p></p>
	</div>
	</div>

**JS:方法二:

	<script type="text/javascript">
	function showTab(i, j) {
		var x;
		var y;
		var l, m;
		for (l = 0; l < 3; l++) {
			x = document.getElementById("id" + l);
			if (i == l) {
				x.className = "blue";
			} else {
				x.className = "white";
			}
		}
		for (m = 0; m < 3; m++) {
			y = document.getElementById("tab" + m);
			if (j == m) {
				y.style.display = "block";
			} else {
				y.style.display = "none";
			}
		}
	}
	</script>

方法二的HTML代码:

	<div class="wrapper">
		<ul>
			<li id="id0" onclick="showTab(0,0)" class="blue">Javascript</li>
			<li id="id1" onclick="showTab(1,1)">Action Script</li>
			<li id="id2" onclick="showTab(2,2)">Photoshop</li>
		</ul>
		<div class="one" id="tab0" style="display:block">
			<p></p>
		</div>
		<div class="two" id="tab1" style="display:none">
			<p></p>
		</div>
		<div class="three" id="tab2" style="display:none">
			<p></p>
		</div>
	</div>
  • 注意这种方法不能去掉l,m, 直接写成for (i=0; i<3; i++), for (j=0; j<3; j++)因为i原本是函数的参数,它的值是外面传进来的,如果将for (l=0; l<3; l++)换成for (i=0; i<3; i++)的话,i就被重新赋值了,showTab(0,0)、showTab(1,1)、showTab(1,2)括号里无论传任何值都没有区别了

方法三:html代码如下:

	<div class="wrap">
		<ul id="tag">
			<li class="current">标签一</li>
			<li>标签二</li>
			<li>标签三</li>
		</ul>
		<div id="tagContent">
			<div> 内容一
				<br>内容一 </div>
			<div> 内容二
				<br>内容二 </div>
			<div> 内容三
				<br>内容三 </div>
		</div>
	</div>
css代码:
   *{margin:0;padding:0;}
   .wrap{width:500px; margin:10px auto; }
   #tag{ width:498px; overflow:hidden; background:#000; border:1px solid #000; }
   #tag li{list-style:none; float:left; margin-right:0px; color:white; padding:5px 20px; cursor:pointer;}
   #tag .current{ color:#000; background:#ccc; }
   #tagContent div{ width:498px; border:1px solid #000; border-top:none; height:300px; display:none; }
  function tabs(title,content){
    var tag=document.getElementById(title).children; //获取Tag下的li,即Tag标签 
    var content=document.getElementById(content).children; //获取Tag标签对应的内容 
    content[0].style.display = "block"; //默认显示第一个标签的内容 
    var len= tag.length; 
  for(var i=0; i<len; i++)   //无论点击谁都能实现当前显示,其余隐藏
    { 
    tag[i].number=i;

    tag[i].onclick = function()     //0级DOM的事件句柄注册

        {     

           for(var n=0; n<len; n++)

           {
              tag[n].className="";
              content[n].style.display="none"; 
            }   //首先将全部的div隐藏

        tag[this.number].className = "current"; 
        content[this.number].style.display = "block"; 
      } 
    }
  };
  tabs("tag","tagContent");//你想实现tab切换的某一个实例。
	上面用到了chidren,可以用childNodes来实现该方法,但是要去除里面空白节点。代码如下:(加黑处就是去除空白节点)
	
	function tabs(title,content){
	        var tag=document.getElementById(title).childNodes; 
	         console.log(tag.length);// 打印结果为7 
	         for(var i=0;i<tag.length;i++){
	            if(tag[i].nodeType==3&&/\s/.test(tag[i].nodeValue)){
	                tag[i].parentNode.removeChild(tag[i]);
	            }
	        }
	        console.log(tag.length);// 打印结果为3

    var content=document.getElementById(content).childNodes; 
    console.log(content.length);// 打印结果为7
    for(var i=0;i<content.length;i++){
        if(content[i].nodeType==3&&/\s/.test(content[i].nodeValue)){
            content[i].parentNode.removeChild(content[i]);
        }
    }
    console.log(content.length);// 打印结果为3

    content[0].style.display = "block"; //默认显示第一个标签的内容 
    var len= tag.length; 
  for(var i=0; i<len; i++)   //无论点击谁都能实现当前显示,其余隐藏
    {  

    tag[i].number=i;

    tag[i].onclick = function()     //0级DOM的事件句柄注册

        {     

           for(var n=0; n<len; n++)

           {
              tag[n].className="";
              content[n].style.display="none"; 
            }   //首先将全部的div隐藏

        //console.log(this.number);
        tag[this.number].className = "current"; 
        content[this.number].style.display = "block"; 
      } 
    }
  };
  tabs("tag","tagContent");