|
选项卡的原理其实比较简单,就是设置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;
|
|