欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js實(shí)現(xiàn)無(wú)限級(jí)樹(shù)形導(dǎo)航列表效果代碼

 更新時(shí)間:2015年09月23日 10:47:23   作者:企鵝  
這篇文章主要介紹了js實(shí)現(xiàn)無(wú)限級(jí)樹(shù)形導(dǎo)航列表效果代碼,通過(guò)一個(gè)封裝的JS類(lèi)實(shí)現(xiàn)無(wú)限樹(shù)形導(dǎo)航的效果,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下

本文實(shí)例講述了js實(shí)現(xiàn)無(wú)限級(jí)樹(shù)形導(dǎo)航列表效果代碼。分享給大家供大家參考。具體如下:

這是一款js實(shí)現(xiàn)無(wú)限級(jí)樹(shù)形下拉導(dǎo)航菜單,簡(jiǎn)潔實(shí)用,用到一個(gè)已封裝好的JS類(lèi),有用的大家借鑒一下。

運(yùn)行效果截圖如下:

在線(xiàn)演示地址如下:

http://demo.jb51.net/js/2015/js-unlimit-tree-style-nav-list-codes/

具體代碼如下:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style type="text/css"> 
 *{ margin:0; padding:0; list-style:none;} 
 body { margin:20px;} 
 h2 { font-family:"黑體"; font-size:24px; text-align:center; line-height:32px;} 
 h5 { font-size:12px; text-align:center; font-weight:normal; color:#666; line-height:28px;} 
 #nav a { text-decoration:underline;color:#06c; font-size:14px; line-height:24px;} 
 #nav ul{ margin-bottom:5px;} 
 #nav strong{ color:#696;} 
 #nav.dyn li ul{ display:none;} 
 #nav.dyn li ul.show{ display:block;} 
 #nav.dyn li{ padding-left:15px;} 
 #nav.dyn li.parent{ background:url(images/user_23.gif) 5px 10px no-repeat;} 
 #nav.dyn li.open{ background:url(images/user_23.gif) 5px -34px no-repeat;} 
 </style> 
<script type="text/javascript">
DOMhelp={
 debugWindowId:'DOMhelpdebug',
 init:function(){
  if(!document.getElementById || !document.createTextNode){return;}
 },
 lastSibling:function(node){
  var tempObj=node.parentNode.lastChild;
  while(tempObj.nodeType!=1 && tempObj.previousSibling!=null){
   tempObj=tempObj.previousSibling;
  }
  return (tempObj.nodeType==1)?tempObj:false;
 },
 firstSibling:function(node){
  var tempObj=node.parentNode.firstChild;
  while(tempObj.nodeType!=1 && tempObj.nextSibling!=null){
   tempObj=tempObj.nextSibling;
  }
  return (tempObj.nodeType==1)?tempObj:false;
 },
 getText:function(node){
  if(!node.hasChildNodes()){return false;}
  var reg=/^\s+$/;
  var tempObj=node.firstChild;
  while(tempObj.nodeType!=3 && tempObj.nextSibling!=null || reg.test(tempObj.nodeValue)){
   tempObj=tempObj.nextSibling;
  }
  return tempObj.nodeType==3?tempObj.nodeValue:false;
 },
 setText:function(node,txt){
  if(!node.hasChildNodes()){return false;}
  var reg=/^\s+$/;
  var tempObj=node.firstChild;
  while(tempObj.nodeType!=3 && tempObj.nextSibling!=null || reg.test(tempObj.nodeValue)){
   tempObj=tempObj.nextSibling;
  }
  if(tempObj.nodeType==3){tempObj.nodeValue=txt}else{return false;}
 },
 createLink:function(to,txt){
  var tempObj=document.createElement('a');
  tempObj.appendChild(document.createTextNode(txt));
  tempObj.setAttribute('href',to);
  return tempObj;
 },
 createTextElm:function(elm,txt){
  var tempObj=document.createElement(elm);
  tempObj.appendChild(document.createTextNode(txt));
  return tempObj;
 },
 closestSibling:function(node,direction){
  var tempObj;
  if(direction==-1 && node.previousSibling!=null){
   tempObj=node.previousSibling;
   while(tempObj.nodeType!=1 && tempObj.previousSibling!=null){
     tempObj=tempObj.previousSibling;
   }
  }else if(direction==1 && node.nextSibling!=null){
   tempObj=node.nextSibling;
   while(tempObj.nodeType!=1 && tempObj.nextSibling!=null){
     tempObj=tempObj.nextSibling;
   }
  }
  return tempObj.nodeType==1?tempObj:false;
 },
 initDebug:function(){
  if(DOMhelp.debug){DOMhelp.stopDebug();}
  DOMhelp.debug=document.createElement('div');
  DOMhelp.debug.setAttribute('id',DOMhelp.debugWindowId);
  document.body.insertBefore(DOMhelp.debug,document.body.firstChild);
 },
 setDebug:function(bug){
  if(!DOMhelp.debug){DOMhelp.initDebug();}
  DOMhelp.debug.innerHTML+=bug+'\n';
 },
 stopDebug:function(){
  if(DOMhelp.debug){
   DOMhelp.debug.parentNode.removeChild(DOMhelp.debug);
   DOMhelp.debug=null;
  }
 },
 getKey:function(e){
  if(window.event){
  var key = window.event.keyCode;
  } else if(e){
  var key=e.keyCode;
  }
  return key;
 },
/* helper methods */
 getTarget:function(e){
  var target = window.event ? window.event.srcElement : e ? e.target : null;
  if (!target){return false;}
  while(target.nodeType!=1 && target.nodeName.toLowerCase()!='body'){
   target=target.parentNode;
  }
  return target;
 },
 stopBubble:function(e){
  if(window.event && window.event.cancelBubble){
   window.event.cancelBubble = true;
  } 
  if (e && e.stopPropagation){
   e.stopPropagation();
  }
 },
 stopDefault:function(e){
  if(window.event && window.event.returnValue){
   window.event.returnValue = false;
  } 
  if (e && e.preventDefault){
   e.preventDefault();
  }
 },
 cancelClick:function(e){
  if (window.event){
   window.event.cancelBubble = true;
   window.event.returnValue = false;
  }
  if (e && e.stopPropagation && e.preventDefault){
   e.stopPropagation();
   e.preventDefault();
  }
 },
 addEvent: function(elm, evType, fn, useCapture){
  if (elm.addEventListener){
   elm.addEventListener(evType, fn, useCapture);
   return true;
  } else if (elm.attachEvent) {
   var r = elm.attachEvent('on' + evType, fn);
   return r;
  } else {
   elm['on' + evType] = fn;
  }
 },
 cssjs:function(a,o,c1,c2){
  switch (a){
   case 'swap':
    o.className=!DOMhelp.cssjs('check',o,c1)?o.className.replace(c2,c1):o.className.replace(c1,c2);
   break;
   case 'add':
    if(!DOMhelp.cssjs('check',o,c1)){o.className+=o.className?' '+c1:c1;}
   break;
   case 'remove':
    var rep=o.className.match(' '+c1)?' '+c1:c1;
    o.className=o.className.replace(rep,'');
   break;
   case 'check':
    var found=false;
    var temparray=o.className.split(' ');
    for(var i=0;i<temparray.length;i++){
     if(temparray[i]==c1){found=true;}
    }
    return found;
   break;
  }
 },
 safariClickFix:function(){
 return false;
 }
}
DOMhelp.addEvent(window, 'load', DOMhelp.init, false);
</script> 
<script type="text/javascript"> 
<!-- 
sn={ 
 dynamicClass:'dyn', 
 showClass:'show', 
 parentClass:'parent', 
 openClass:'open', 
 navID:'nav', 
 init:function(){ 
 var triggerLink; 
 if(!document.getElementById || !document.createTextNode){return;} 
 var nav=document.getElementById(sn.navID); 
 if(!nav){return;} 
 DOMhelp.cssjs('add',nav,sn.dynamicClass);  
 var nested=nav.getElementsByTagName('ul'); 
 for(var i=0;i<nested.length;i++){ 
  triggerLink=nested[i].parentNode.getElementsByTagName('a')[0]; 
  DOMhelp.cssjs('add',triggerLink.parentNode,sn.parentClass);  
  DOMhelp.addEvent(triggerLink,'click',sn.changeSection,false); 
  triggerLink.onclick=DOMhelp.safariClickFix; 
  if(nested[i].parentNode.getElementsByTagName('strong').length>0){ 
  DOMhelp.cssjs('add',triggerLink.parentNode,sn.openClass);  
  DOMhelp.cssjs('add',nested[i],sn.showClass); 
  } 
 } 
 }, 
 changeSection:function(e){ 
 var t=DOMhelp.getTarget(e); 
 var firstList=t.parentNode.getElementsByTagName('ul')[0]; 
 if(DOMhelp.cssjs('check',firstList,sn.showClass)){ 
  DOMhelp.cssjs('remove',firstList,sn.showClass) 
  DOMhelp.cssjs('swap',t.parentNode,sn.openClass,sn.parentClass); 
 } else { 
  DOMhelp.cssjs('add',firstList,sn.showClass) 
  DOMhelp.cssjs('swap',t.parentNode,sn.openClass,sn.parentClass); 
 } 
 DOMhelp.cancelClick(e); 
 } 
} 
DOMhelp.addEvent(window,'load',sn.init,false); 
--> 
</script> 
<h2>js實(shí)現(xiàn)無(wú)限級(jí)樹(shù)形導(dǎo)航列表</h2>
<ul id="nav"> 
 <li><a href="#">主頁(yè)</a></li> 
 <li><a href="#">產(chǎn)品</a> 
 <ul> 
  <li><a href="#">大類(lèi)別一</a> 
  <ul> 
   <li><a href="#">小類(lèi)別一</a> 
   <ul> 
    <li><a href="#">次類(lèi)別一</a></li> 
    <li><a href="#">次類(lèi)別二</a></li> 
   </ul> 
   </li> 
   <li><a href="#">小類(lèi)別二</a></li> 
  </ul> 
  </li> 
  <li><a href="#">大類(lèi)別二</a></li> 
  <li><a href="#">大類(lèi)別三</a> 
  <ul> 
   <li><a href="#">小類(lèi)別一</a></li> 
   <li><a href="#">小類(lèi)別二</a></li> 
  </ul> 
  </li> 
 </ul> 
 </li> 
 <li><a href="#">服務(wù)</a> 
 <ul> 
  <li><a href="#">大類(lèi)別一</a></li> 
  <li><a href="#">大類(lèi)別二</a></li> 
  <li><a href="#">大類(lèi)別三</a></li> 
 </ul> 
 </li> 
 <li><a href="#">合作</a></li> 
 <li><a href="#">關(guān)于我們</a> 
 <ul> 
  <li><a href="#">大類(lèi)別一</a> 
  <ul> 
   <li><a href="#">小類(lèi)別一</a></li> 
   <li><a href="#">小類(lèi)別二</a></li> 
  </ul> 
  </li> 
  <li><a href="#">大類(lèi)別二</a> 
  <ul> 
   <li><a href="#">小類(lèi)別一</a></li> 
   <li><a href="#">小類(lèi)別二</a></li> 
  </ul> 
  </li> 
  <li><a href="#">大類(lèi)別三</a> 
  <ul> 
   <li><a href="#">小類(lèi)別一</a></li> 
   <li><a href="#">小類(lèi)別二</a></li> 
  </ul> 
  </li> 
  <li><a href="#">大類(lèi)別四</a></li> 
 </ul> 
 </li> 
 <li><a href="#">聯(lián)系我們</a> 
 <ul> 
  <li><a href="#">大類(lèi)別一</a></li> 
  <li><a href="#">大類(lèi)別二</a></li> 
 </ul> 
 </li> 
</ul>

希望本文所述對(duì)大家的JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • js實(shí)現(xiàn)人才網(wǎng)站職位選擇功能的方法

    js實(shí)現(xiàn)人才網(wǎng)站職位選擇功能的方法

    這篇文章主要介紹了js實(shí)現(xiàn)人才網(wǎng)站職位選擇功能的方法,涉及javascript動(dòng)態(tài)操作頁(yè)面元素結(jié)點(diǎn)的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • 微信小程序上傳圖片到服務(wù)器實(shí)例代碼

    微信小程序上傳圖片到服務(wù)器實(shí)例代碼

    這篇文章主要介紹了微信小程序上傳圖片到服務(wù)器的實(shí)例代碼,在文章給大家補(bǔ)充介紹了微信小程序上傳一或多張圖片 的方法,本文給大家介紹的非常詳細(xì),具有參考借鑒加載,需要的朋友可以參考下
    2017-11-11
  • uniapp實(shí)現(xiàn)tabBar-switchTab之間的傳參方法

    uniapp實(shí)現(xiàn)tabBar-switchTab之間的傳參方法

    這篇文章主要介紹了uniapp實(shí)現(xiàn)tabBar-switchTab之間的傳參方式,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-01-01
  • 前端性能優(yōu)化及技巧

    前端性能優(yōu)化及技巧

    這篇文章主要介紹了前端性能優(yōu)化及技巧,需要的朋友可以參考下
    2016-05-05
  • js與C#進(jìn)行時(shí)間戳轉(zhuǎn)換

    js與C#進(jìn)行時(shí)間戳轉(zhuǎn)換

    最近在做一個(gè)項(xiàng)目,需要JS時(shí)間戳轉(zhuǎn)成C#里的時(shí)間,再把C#里的時(shí)間戳轉(zhuǎn)成JS的時(shí)間,就仔細(xì)研究了下js與C#進(jìn)行轉(zhuǎn)換的注意要點(diǎn),這里記錄下來(lái),有需要的小伙伴自己拿走。
    2014-11-11
  • Javascript中call和apply函數(shù)的比較和使用實(shí)例

    Javascript中call和apply函數(shù)的比較和使用實(shí)例

    這篇文章主要介紹了Javascript中call和apply函數(shù)的比較和使用實(shí)例,本文試圖用更加清晰簡(jiǎn)單的思路來(lái)分析解釋這兩個(gè)函數(shù),需要的朋友可以參考下
    2015-02-02
  • Bootstrap基本插件學(xué)習(xí)筆記之Popover提示框(19)

    Bootstrap基本插件學(xué)習(xí)筆記之Popover提示框(19)

    這篇文章主要為大家詳細(xì)介紹了Bootstrap基本插件學(xué)習(xí)筆記之Popover提示框的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • js加強(qiáng)的經(jīng)典分頁(yè)實(shí)例

    js加強(qiáng)的經(jīng)典分頁(yè)實(shí)例

    js加強(qiáng)的經(jīng)典分頁(yè)實(shí)例,需要的朋友可以參考一下
    2013-03-03
  • Bootstrap精簡(jiǎn)教程

    Bootstrap精簡(jiǎn)教程

    Bootstrap 是基于 HTML、CSS、JAVASCRIPT 的,它簡(jiǎn)潔靈活,使得 Web開(kāi)發(fā)更加快捷。本文給大家分享Bootstrap精簡(jiǎn)教程,對(duì)Bootstrap精簡(jiǎn)教程感興趣的朋友一起學(xué)習(xí)
    2015-11-11
  • 淺談JS之tagNaem和nodeName

    淺談JS之tagNaem和nodeName

    下面小編就為大家?guī)?lái)一篇淺談JS之tagNaem和nodeName。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-09-09

最新評(píng)論