首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

JavaScript 導航選單切換程式碼逐行解析與邏輯圖解

     編輯:程式設計綜合問答

以下這段 JS 程式碼實現經典的單一展開導航選單:點擊某項展開內容,同時關閉其他已展開項目。適合側邊欄選單、常見問答(FAQ)摺疊面板等場景。

原始程式碼

function leo(n) {
    var navUi = document.getElementById("m" + n);
    if (navUi.style.display != "block") {
        for (var i = 0; i <= 5; i++) {
            document.getElementById("m" + i).style.display = "none";
        }
        navUi.style.display = "block";
    } else {
        navUi.style.display = "none";
    }
}

逐行邏輯解析

程式碼說明
var navUi = document.getElementById("m" + n)取得 ID 為 m{參數n} 的 DOM 元素,對應點選的選單面板
if (navUi.style.display != "block")判斷該面板目前是否為隱藏狀態(非 block 顯示)
for (var i = 0; i <= 5; i++)迴圈處理 ID 為 m0~m5 的所有面板
document.getElementById("m" + i).style.display = "none"全部隱藏,確保同時間只有一個面板展開
navUi.style.display = "block"將當前點選的面板設為顯示
else { navUi.style.display = "none" }若面板原本已展開,再次點擊則摺疊隱藏

參數 n 的角色

n 為呼叫時傳入的索引值(0~5),對應 HTML 中各面板的 ID 尾碼。例如:onclick="leo(2)" 會控制 id="m2" 的元素。

改良建議

  • 將硬編碼的 5 改為動態取得面板總數:document.querySelectorAll('[id^=m]').length - 1。
  • 使用 CSS 類別控制顯示/隱藏(classList.toggle('active')),分離樣式與行為。
  • 加入 aria-expanded 無障礙屬性,提升可及性。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved