Js摺疊菜單

html腳本:

  1. <h1>摺疊菜單</h1>
  2. <div>
  3. <a href="menu1.html" class="menuLink">足球隊</a>
  4. <ul id="menu1">
  5.     <li>國安</li>
  6.     <li>AC米蘭</li>
  7.     <li>皇家馬德里</li>
  8. </ul>
  9. </div>
  10. <div>
  11. <a href="menu2.html" class="menuLink">籃球隊</a>
  12. <ul id="menu2">
  13.     <li>北京首鋼</li>
  14.     <li>休斯頓火箭</li>
  15.     <li>菲尼克斯太陽</li>
  16. </ul>
  17. </div>
  18. <div>
  19. <a href="menu3.html" class="menuLink">體操</a>
  20. <ul id="menu3">
  21.     <li>體操隊1</li>
  22.     <li>體操隊2</li>
  23.     <li>體操隊3</li>
  24. </ul>
  25. </div>

注意:超鏈接的地址是找到對應ul的標識。

 

思路:

  • 取頁面上所有的a標籤
  • 根據類名判斷是否爲菜單上的a標籤(不能直接使用getElementsByClassName,IE6不識別),所以需要判斷類名中是否含有"menuLink"
  • 點擊執行顯示和隱藏功能的函數
  • 找到超鏈接地址this.href(完全路徑)
  • 截取到超鏈接地址,lastIndexOf(這個方法和indexOf不同,是從後往前尋找,但結果都是從0開始的位置號),然後用substring截取字符串(substring(開始,結束)),最後截取的值,包括開始的字符,但不包括結束的字符,可以叫有頭無尾。
  • 控制style.display,通過(display=="block")?"none":"block";來使點擊即能執行展開,又能執行收縮操作。
  • 結束一定要加return false,才能使超鏈接雖然點擊了卻不跳轉。
  • 注意,在css中要定義下ul默認的display屬性,否則點擊在第一次點擊超鏈接的時候,display值爲默認而不是none。

 

JS代碼:

  1. window.onload = initAll;
  2. function initAll() {
  3.     var allLinks = document.getElementsByTagName("a");
  4.     for(var i=0;i<allLinks.length;i++) {
  5.         if(allLinks[i].className.indexOf("menuLink")>-1) {
  6.             allLinks[i].onclick = toggleMenu;
  7.         }
  8.     }
  9. }
  10. function toggleMenu() {
  11.     var startLetter = this.href.lastIndexOf("/")+1;
  12.     var endLetter = this.href.lastIndexOf(".");
  13.     var target = this.href.substring(startLetter,endLetter);
  14.     var thisMenu = document.getElementById(target).style;
  15.     thisMenu.display = (thisMenu.display=="block")?"none":"block";
  16.     return false;
  17. }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章