最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

運(yù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í)樹形導(dǎo)航列表</h2>
<ul id="nav"> 
 <li><a href="#">主頁(yè)</a></li> 
 <li><a href="#">產(chǎn)品</a> 
 <ul> 
  <li><a href="#">大類別一</a> 
  <ul> 
   <li><a href="#">小類別一</a> 
   <ul> 
    <li><a href="#">次類別一</a></li> 
    <li><a href="#">次類別二</a></li> 
   </ul> 
   </li> 
   <li><a href="#">小類別二</a></li> 
  </ul> 
  </li> 
  <li><a href="#">大類別二</a></li> 
  <li><a href="#">大類別三</a> 
  <ul> 
   <li><a href="#">小類別一</a></li> 
   <li><a href="#">小類別二</a></li> 
  </ul> 
  </li> 
 </ul> 
 </li> 
 <li><a href="#">服務(wù)</a> 
 <ul> 
  <li><a href="#">大類別一</a></li> 
  <li><a href="#">大類別二</a></li> 
  <li><a href="#">大類別三</a></li> 
 </ul> 
 </li> 
 <li><a href="#">合作</a></li> 
 <li><a href="#">關(guān)于我們</a> 
 <ul> 
  <li><a href="#">大類別一</a> 
  <ul> 
   <li><a href="#">小類別一</a></li> 
   <li><a href="#">小類別二</a></li> 
  </ul> 
  </li> 
  <li><a href="#">大類別二</a> 
  <ul> 
   <li><a href="#">小類別一</a></li> 
   <li><a href="#">小類別二</a></li> 
  </ul> 
  </li> 
  <li><a href="#">大類別三</a> 
  <ul> 
   <li><a href="#">小類別一</a></li> 
   <li><a href="#">小類別二</a></li> 
  </ul> 
  </li> 
  <li><a href="#">大類別四</a></li> 
 </ul> 
 </li> 
 <li><a href="#">聯(lián)系我們</a> 
 <ul> 
  <li><a href="#">大類別一</a></li> 
  <li><a href="#">大類別二</a></li> 
 </ul> 
 </li> 
</ul>

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

相關(guān)文章

  • 值得分享的最全面Bootstrap快速人門案例

    值得分享的最全面Bootstrap快速人門案例

    這篇文章主要為大家詳細(xì)介紹了最全面的前端插件Bootstrap快速人門案例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • js實(shí)現(xiàn)點(diǎn)擊選項(xiàng)置頂動(dòng)畫效果

    js實(shí)現(xiàn)點(diǎn)擊選項(xiàng)置頂動(dòng)畫效果

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)點(diǎn)擊選項(xiàng)置頂動(dòng)畫效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • JS中圖片壓縮的方法小結(jié)

    JS中圖片壓縮的方法小結(jié)

    這篇文章主要介紹了JS中圖片壓縮的方法,包括等比壓縮圖片的方法,需要的朋友可以參考下
    2017-11-11
  • 側(cè)欄跟隨滾動(dòng)的簡(jiǎn)單實(shí)現(xiàn)代碼

    側(cè)欄跟隨滾動(dòng)的簡(jiǎn)單實(shí)現(xiàn)代碼

    側(cè)欄里的有些內(nèi)容滾動(dòng)到頁(yè)面頂端以后就固定在那個(gè)位置,不再跟隨滾動(dòng)條而滾動(dòng),想必很多站長(zhǎng)朋友都想實(shí)現(xiàn)這個(gè)效果吧,接下來(lái)為大家詳細(xì)介紹下,感興趣的你可不要錯(cuò)過(guò)了哈
    2013-03-03
  • JavaScript如何防止頁(yè)面退格鍵回退

    JavaScript如何防止頁(yè)面退格鍵回退

    本文主要介紹了JavaScript如何防止頁(yè)面退格鍵回退,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 實(shí)現(xiàn)非常簡(jiǎn)單的js雙向數(shù)據(jù)綁定

    實(shí)現(xiàn)非常簡(jiǎn)單的js雙向數(shù)據(jù)綁定

    Angular實(shí)現(xiàn)了雙向綁定機(jī)制。所謂的雙向綁定,無(wú)非是從界面的操作能實(shí)時(shí)反映到數(shù)據(jù),數(shù)據(jù)的變更能實(shí)時(shí)展現(xiàn)到界面。本文給大家詳細(xì)介紹js雙向數(shù)據(jù)綁定,感興趣的朋友參考下
    2015-11-11
  • JS獲取url參數(shù),JS發(fā)送json格式的POST請(qǐng)求方法

    JS獲取url參數(shù),JS發(fā)送json格式的POST請(qǐng)求方法

    下面小編就為大家分享一篇JS獲取url參數(shù),JS發(fā)送json格式的POST請(qǐng)求方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-03-03
  • JavaScript實(shí)現(xiàn)讀取條碼中的二進(jìn)制數(shù)據(jù)

    JavaScript實(shí)現(xiàn)讀取條碼中的二進(jìn)制數(shù)據(jù)

    條碼是一種以機(jī)器可讀的可視形式表示數(shù)據(jù)的方法,我們可以從條碼獲取二進(jìn)制數(shù)據(jù),并通過(guò)不同方法去讀碼,下面我們就來(lái)看看如何實(shí)現(xiàn)讀取條碼中的二進(jìn)制數(shù)據(jù)吧
    2024-03-03
  • 關(guān)于ES6中的箭頭函數(shù)超詳細(xì)梳理

    關(guān)于ES6中的箭頭函數(shù)超詳細(xì)梳理

    箭頭函數(shù)可以說(shuō)是es6的一大亮點(diǎn),使用箭頭函數(shù),可以簡(jiǎn)化編碼過(guò)程,是代碼更加的簡(jiǎn)潔,下面這篇文章主要給大家介紹了關(guān)于ES6中箭頭函數(shù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • JavaScript 學(xué)習(xí)筆記(六)

    JavaScript 學(xué)習(xí)筆記(六)

    JavaScript 定義類或?qū)ο?javascript步入高手行列必須要了解的。
    2009-12-12

最新評(píng)論

舞阳县| 疏勒县| 化隆| 嘉义县| 梅河口市| 雷波县| 策勒县| 西昌市| 柘荣县| 禄丰县| 济南市| 乳山市| 深水埗区| 吴忠市| 祥云县| 贺州市| 盐城市| 竹山县| 枣强县| 舞钢市| 航空| 修文县| 五峰| 灵丘县| 铜梁县| 织金县| 玉田县| 陇川县| 安顺市| 内黄县| 马鞍山市| 海丰县| 义乌市| 上犹县| 大冶市| 肇州县| 刚察县| 乐业县| 丰城市| 敦煌市| 大渡口区|