javascript下拉列表菜單的實(shí)現(xiàn)方法
之前寫(xiě)過(guò)這個(gè)《javascript下拉列表中顯示樹(shù)形菜單的實(shí)現(xiàn)方法》菜單的體現(xiàn),但是在寫(xiě)了之后就發(fā)現(xiàn)了,不太適合,高度要精準(zhǔn)控制,并且還不是很好看?,F(xiàn)在采用table來(lái)封裝,我們知道table的每一行寫(xiě)滿了之后,下一行會(huì)自動(dòng)加,這個(gè)比之前我們自己制定高度好很多。
1、點(diǎn)擊之后都可以并存的情況(只需函數(shù)寫(xiě)法不一樣就可)
dispaly也是自己設(shè)置的,通過(guò)父節(jié)點(diǎn)來(lái)操作子節(jié)點(diǎn),顯示與否;
/* function open1(node){ //通過(guò)父節(jié)點(diǎn)來(lái)操作兄弟節(jié)點(diǎn) 當(dāng)點(diǎn)擊之后出現(xiàn)之后,直接就能打開(kāi)但是要求在點(diǎn)開(kāi)一個(gè)時(shí)候,其余的都關(guān)掉 var nodes = node.parentNode; var nn = nodes.getElementsByTagName("ul")[0]; with (nn.style) { display = (display == "block") ? "none" : "block"; } }*/ </script>
2、點(diǎn)擊之后只允許打開(kāi)一個(gè),其余的都要關(guān)掉
<script type="text/javascript"> function list1(node){ //這是要對(duì)全部操作,必須要得到所有的對(duì)象 (根據(jù)table 的id 來(lái)獲得) //根據(jù)this判斷,不是屬于this,那么就關(guān)閉 //alert("aa"); //1,獲得點(diǎn)擊對(duì)象的值 var nodes = node.parentNode;//傳入當(dāng)前的父節(jié)點(diǎn) var nn = nodes.getElementsByTagName("ul")[0];//得到當(dāng)前的對(duì)象,要是遍歷所有,與這個(gè)對(duì)象一樣,就設(shè)置相反的情況,其余的全部關(guān)閉 //2,獲得全部對(duì)象 var mm = document.getElementById("menuid"); var names = mm.getElementsByTagName("ul"); //3,開(kāi)始一一配對(duì) for (var x = 0; x < names.length; x++) { /*這樣寫(xiě),可以簡(jiǎn)化,利用下面的方法 if (names[x] == nn) { if (nn.className == "open2") { nn.className = "close2"; } else { nn.className = "open2"; } }else { nn.className = "close2"; }*/ if(names[x]==nn&&names[x].className!="open2"){ nn.className="open2"; }else{ names[x].className="close2"; } } } </script>
css樣式的編寫(xiě):
<style type="text/css"> ul{ list-style:none; margin:0px; padding:0px; } table{ border:#00ff40 solid 1px; } table a{ text-decoration:none; } table tr td ul{ display:none; } .open2{ display:block; background:#8080ff; } .close2{ display:none; }
效果圖(只能開(kāi)一個(gè)的):
完整代碼:
<!DOCTYPE html> <html> <head> <title>qqMenu.html</title> <style type="text/css"> ul{ list-style:none; margin:0px; padding:0px; } table{ border:#00ff40 solid 1px; } table a{ text-decoration:none; } table tr td ul{ display:none; } .open2{ display:block; background:#8080ff; } .close2{ display:none; } </style> <script type="text/javascript"> /* function open1(node){ //通過(guò)父節(jié)點(diǎn)來(lái)操作兄弟節(jié)點(diǎn) 當(dāng)點(diǎn)擊之后出現(xiàn)之后,直接就能打開(kāi)但是要求在點(diǎn)開(kāi)一個(gè)時(shí)候,其余的都關(guān)掉 var nodes = node.parentNode; var nn = nodes.getElementsByTagName("ul")[0]; with (nn.style) { display = (display == "block") ? "none" : "block"; } }*/ </script> <script type="text/javascript"> function list1(node){ //這是要對(duì)全部操作,必須要得到所有的對(duì)象 (根據(jù)table 的id 來(lái)獲得) //根據(jù)this判斷,不是屬于this,那么就關(guān)閉 //alert("aa"); //1,獲得點(diǎn)擊對(duì)象的值 var nodes = node.parentNode;//傳入當(dāng)前的父節(jié)點(diǎn) var nn = nodes.getElementsByTagName("ul")[0];//得到當(dāng)前的對(duì)象,要是遍歷所有,與這個(gè)對(duì)象一樣,就設(shè)置相反的情況,其余的全部關(guān)閉 //2,獲得全部對(duì)象 var mm = document.getElementById("menuid"); var names = mm.getElementsByTagName("ul"); //3,開(kāi)始一一配對(duì) for (var x = 0; x < names.length; x++) { /*這樣寫(xiě),可以簡(jiǎn)化,利用下面的方法 if (names[x] == nn) { if (nn.className == "open2") { nn.className = "close2"; } else { nn.className = "open2"; } }else { nn.className = "close2"; }*/ if(names[x]==nn&&names[x].className!="open2"){ nn.className="open2"; }else{ names[x].className="close2"; } } } </script> <!--<link rel="stylesheet" type="text/css" href="./styles.css">--> </head> <body > <table id="menuid"> <tr> <td> <!--<a href="javascript:void(0)" onclick="open1(this)">同事欄</a>--> <a href="javascript:void(0)" onclick="list1(this)">同事欄</a> <ul > <li>同事1</li> <li>同事2</li> <li>同事3</li> <li>同事4</li> </ul> </td> </tr> <tr> <td> <!--<a href="javascript:void(0)" onclick="open1(this)">同學(xué)欄</a>--> <a href="javascript:void(0)" onclick="list1(this)">同學(xué)欄</a> <ul> <li>同學(xué)1</li> <li>同學(xué)2</li> <li>同學(xué)3</li> <li>同學(xué)4</li> </ul> </td> </tr> <tr> <td> <!--<a href="javascript:void(0)" onclick="open1(this)">黑名單欄</a>--> <a href="javascript:void(0)" onclick="list1(this)">黑名單欄</a> <ul> <li>黑名單同學(xué)1</li> <li>黑名單同學(xué)2</li> <li>黑名單同學(xué)3</li> <li>黑名單同學(xué)4</li> </ul> </td> </tr> </table> </body> </html>
相信大家通過(guò)這兩篇文章的介紹應(yīng)該有了大概的思路,小編的這篇文章有些制作的效果略微簡(jiǎn)陋,大家可以再進(jìn)一步的完善。
相關(guān)文章
JS去除字符串最后的逗號(hào)實(shí)例分析【四種方法】
這篇文章主要介紹了JS去除字符串最后的逗號(hào),結(jié)合實(shí)例形式分析了四種字符串遍歷、截取的操作方法,需要的朋友可以參考下2019-06-06javascript簡(jiǎn)單拖拽實(shí)現(xiàn)代碼(鼠標(biāo)事件 mousedown mousemove mouseup)
javascript簡(jiǎn)單拖拽,簡(jiǎn)單拖拽實(shí)現(xiàn)2012-05-05基于小程序請(qǐng)求接口wx.request封裝的類axios請(qǐng)求
這篇文章主要介紹了基于小程序請(qǐng)求接口wx.request封裝的類axios請(qǐng)求,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07javascript實(shí)現(xiàn)圖片輪換動(dòng)作方法
這篇文章主要介紹了javascript實(shí)現(xiàn)圖片輪換動(dòng)作方法,文章通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08模仿JQuery sortable效果 代碼有錯(cuò)但值得看看
模仿JQuery sortable效果 代碼有錯(cuò)但值得看看,因?yàn)闀r(shí)間關(guān)系,需要的朋友可以參考下。2009-11-11用js判斷是否為360瀏覽器的實(shí)現(xiàn)代碼
這篇文章主要介紹了用js判斷是否為360瀏覽器的實(shí)現(xiàn)代碼,有時(shí)候我們需要判斷是否為360瀏覽器,包括百度聯(lián)盟后臺(tái)就有這樣的提示需要的朋友可以參考下2015-01-01Three.js+React制作3D夢(mèng)中海島效果
深居內(nèi)陸的人們,大概每個(gè)人都有過(guò)大海之夢(mèng)吧。本文使用React+Three.js技術(shù)棧,實(shí)現(xiàn)3D海洋和島嶼,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-05-05