JavaScript+CSS多級樹形展開菜單的代碼,本例是應(yīng)用別人的例子,原來那位老兄是用一般方法寫成的無限級折疊菜單,在此先感謝他!后來我就通過了一些簡化修改,將原來的例子改成了面向?qū)ο蟮姆绞剑瑢?shí)例中的展開與閉合的小圖標(biāo)可以自己重新添加,從而更好的查看效果。
演示:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>JavaScript+CSS多級樹形展開菜單</title><style type="text/css">body{margin:0;padding:0;font:12px/1.5 Tahoma,Helvetica,Arial,sans-serif;}ul,li,{margin:0;padding:0;}ul{list-style:none;}a{text-decoration: none;}#root{margin:10px;width:200px;overflow:hidden;}#root li{line-height:25px;}#root .rem{padding-left:16px;}#root .add{background:url(/uploads/allimg/1209/treeico.gif) -4px -31px no-repeat;}#root .ren{background:url(/uploads/allimg/1209/treeico.gif) -4px -7px no-repeat;}#root li a{color:#666666;padding-left:5px;outline:none;blr:expression(this.onFocus=this.blur());}#root .two{padding-left:20px;display:none;}</style></head><body><ul id="root"><li><label><a href="javascript:;">校訊通</a></label><ul class="two"><li><label><a href="javascript:;">沈陽市</a></label><ul class="two"><li><label><a href="javascript:;">二小</a></label><ul class="two"><li><label><a href="javascript:;">二年級</a></label></li><li><label><a href="javascript:;">三年級</a></label><ul class="two"><li><label><a href="javascript:;">一班</a></label><ul class="two"><li><label><a href="javascript:;">張三</a></label></li><li><label><a href="javascript:;">王五</a></label><ul class="two"><li><label><a href="javascript:;">班長</a></label></li><li><label><a href="javascript:;">學(xué)習(xí)委員</a></label></li></ul></li></ul></li><li><label><a href="javascript:;">實(shí)驗(yàn)班</a></label></li></ul></li></ul></li></ul></li><li><label><a href="javascript:;">撫順市</a></label><ul class="two"><li><label><a href="javascript:;">二小</a></label></li><li><label><a href="javascript:;">一中</a></label></li></ul></li></ul></li></ul><script type="text/javascript" >/**一般JS方法function addEvent(el,name,fn){//綁定事件if(el.addEventListener) return el.addEventListener(name,fn,false);return el.attachEvent('on'+name,fn);}function nextnode(node){//尋找下一個兄弟并剔除空的文本節(jié)點(diǎn)if(!node)return ;if(node.nodeType == 1)return node;if(node.nextSibling)return nextnode(node.nextSibling);}function prevnode(node){//尋找上一個兄弟并剔除空的文本節(jié)點(diǎn)if(!node)return ;if(node.nodeType == 1)return node;if(node.previousSibling)return prevnode(node.previousSibling);}addEvent(document.getElementById('root'),'click',function(e){//綁定點(diǎn)擊事件,使用root根元素代理e = e||window.event;var target = e.target||e.srcElement;var tp = nextnode(target.parentNode.nextSibling);switch(target.nodeName){case 'A'://點(diǎn)擊A標(biāo)簽展開和收縮樹形目錄,并改變其樣式if(tp&&tp.nodeName == 'UL'){if(tp.style.display != 'block' ){tp.style.display = 'block';prevnode(target.parentNode.previousSibling).className = 'ren'}else{tp.style.display = 'none';prevnode(target.parentNode.previousSibling).className = 'add'}}break;case 'SPAN'://點(diǎn)擊圖標(biāo)只展開或者收縮var ap = nextnode(nextnode(target.nextSibling).nextSibling);if(ap.style.display != 'block' ){ap.style.display = 'block';target.className = 'ren'}else{ap.style.display = 'none';target.className = 'add'}break;}});window.onload = function(){//頁面加載時給有孩子結(jié)點(diǎn)的元素動態(tài)添加圖標(biāo)var labels = document.getElementById('root').getElementsByTagName('label');for(var i=0;i<labels.length;i++){var span = document.createElement('span');span.style.cssText ='display:inline-block;height:18px;vertical-align:middle;width:16px;cursor:pointer;';span.innerHTML = ' 'span.className = 'add';if(nextnode(labels[i].nextSibling)&&nextnode(labels[i].nextSibling).nodeName == 'UL')labels[i].parentNode.insertBefore(span,labels[i]);elselabels[i].className = 'rem'}}**///面向?qū)ο蠓椒╲ar Tree = function(o){this.root = document.getElementById(o);this.labels = this.root.getElementsByTagName('label');var that = this;this.int();Tree.prototype.addEvent(this.root,'click',function(e){that.treeshow(e)});}Tree.prototype = {int:function(){//初始化頁面,加載時給有孩子結(jié)點(diǎn)的元素動態(tài)添加圖標(biāo)for(var i=0;i<this.labels.length;i++){var span = document.createElement('span');span.style.cssText ='display:inline-block;height:18px;vertical-align:middle;width:16px;cursor:pointer;';span.innerHTML = ' 'span.className = 'add';if(this.nextnode(this.labels[i].nextSibling)&&this.nextnode(this.labels[i].nextSibling).nodeName == 'UL')this.labels[i].parentNode.insertBefore(span,this.labels[i]);elsethis.labels[i].className = 'rem'}},treeshow:function(e){e = e||window.event;var target = e.target||e.srcElement;var tp = this.nextnode(target.parentNode.nextSibling);switch(target.nodeName){case 'A'://點(diǎn)擊A標(biāo)簽展開和收縮樹形目錄,并改變其樣式if(tp&&tp.nodeName == 'UL'){if(tp.style.display != 'block' ){tp.style.display = 'block';this.prevnode(target.parentNode.previousSibling).className = 'ren'}else{tp.style.display = 'none';this.prevnode(target.parentNode.previousSibling).className = 'add'}}break;case 'SPAN'://點(diǎn)擊圖標(biāo)只展開或者收縮var ap = this.nextnode(this.nextnode(target.nextSibling).nextSibling);if(ap.style.display != 'block' ){ap.style.display = 'block';target.className = 'ren'}else{ap.style.display = 'none';target.className = 'add'}break;}},addEvent:function(el,name,fn){//綁定事件if(el.addEventListener) return el.addEventListener(name,fn,false);return el.attachEvent('on'+name,fn);},nextnode:function(node){//尋找下一個兄弟并剔除空的文本節(jié)點(diǎn)if(!node)return ;if(node.nodeType == 1)return node;if(node.nextSibling)return this.nextnode(node.nextSibling);},prevnode:function(node){//尋找上一個兄弟并剔除空的文本節(jié)點(diǎn)if(!node)return ;if(node.nodeType == 1)return node;if(node.previousSibling)return prevnode(node.previousSibling);}}tree = new Tree("root");//實(shí)例化應(yīng)用</script></body></html><div style="text-align:center;margin:30px 0 0 0;"><hr style="color:#999;height:1px;">如不能顯示效果,請按Ctrl+F5刷新本頁,更多網(wǎng)頁代碼:<a href='http://www.vxbq.cn/' target='_blank'>http://www.vxbq.cn/</a></div>提示:可修改后代碼再運(yùn)行!
上一篇 邂逅SQL Server 2008的別樣心動
下一篇 運(yùn)營技巧:數(shù)據(jù)分析讓網(wǎng)絡(luò)推廣事半功倍
程序員人生,我編程,我富裕,記住wfuyu網(wǎng),php教程,php學(xué)習(xí),php手冊,CMS模版制作
聲明:本站大部分內(nèi)容是作者原創(chuàng),少部分收集于互聯(lián)網(wǎng)供大家一起學(xué)習(xí),原版權(quán)很多不明,如有侵權(quán)請聯(lián)系本站,謝謝!
粵ICP備14040726號-1?? 2015-2020 程序員人生 版權(quán)所有