代码改变世界

[Javascript]自适应高度的Tab选项卡

2011-02-28 10:51  Matin  阅读(487)  评论(0编辑  收藏  举报

选项卡的原理其实比较简单,就是设置2种状态,选中和未选中的2中不同CSS状态,因此也有直接不用JS之用css就能实现的效果;
JS部分具体的代码如下:

var getSiblingNode=function(className,elAr,el,not){
className=" "+className+" ";
	var Arr=[];
		for(var i=0,l=elAr.length;i<l;i++){
			if(elAr[i]!=el&&(elAr[i].nodeType===1)&&(" "+elAr[i].className+" ").indexOf(className)>-1&& not){
			Arr.push(elAr[i]);
			}
			else if(elAr[i]!=el&&elAr[i].nodeType===1){
			Arr.push(elAr[i]);
			}
		}
	return Arr;
}
var runFn=function(id,parentId){
	var elId=id,parentId=parentId;
	var contentEl=document.getElementById(elId); 
	var liEl=contentEl.getElementsByTagName("ul")[0].getElementsByTagName("li");
	var divEl=document.getElementById(parentId).getElementsByTagName("div");
		for(var i=0,l=liEl.length;i<l;i++){
//这里有个闭包,用于获取被选中元素的同类元素;
			(function(i){
			var thisSibling=getSiblingNode("n",divEl,divEl[i],true);
			liEl[i].onclick=function(){
				divEl[i].style.display="block";
//设置选中的dom元素的状态;
				this.className="hasClick";
				var divElSibling=getSiblingNode(null,liEl,liEl[i],false);
//设置其他未被选中的dom元素的css;
					for(var a=0,b=thisSibling.length;a<b;a++){
					thisSibling[a].style.display="none";
					}
					for(var x=0,y=divElSibling.length;x<y;x++){
					divElSibling[x].className="havtClick";
					}
				}
			})(i)
		}
}
var slide=function(){
runFn("content","disDiv");
}
window.onload=slide;