1.查找兄弟元素

来源:https://www.cnblogs.com/AmosRhee/archive/2020/07/16/13324186.html
-Advertisement-
Play Games

用JS製作導航顯示子菜單(滑鼠進入的時候,我們要a標簽顯示它的兄弟元素 ) HTML: <nav> <ul> <li><a href="#">關於</a></li> <li><a href="#">技能</a></li> <li> <a class="menutrigger" href="#">作品 ...


用JS製作導航顯示子菜單(滑鼠進入的時候,我們要a標簽顯示它的兄弟元素 )

HTML:

        <nav>
            <ul>
                <li><a href="#">關於</a></li>
                <li><a href="#">技能</a></li>
                <li>
                    <a class="menutrigger" href="#">作品</a>
                    <span> </span>
                    <p> </p>
                    <ul class="submenu">
                        <li>作品1</li>
                        <li>作品2</li>
                        <li>作品3</li>
                    </ul>
                </li>
                <li>
                    <a class="menutrigger" href="#">博客</a>
                    <ul class="submenu">
                        <li>博客1</li>
                        <li>博客2</li>
                        <li>博客3</li>
                    </ul>
                </li>
                <li><a href="#">日曆</a></li>
                <li><a href="#">聯繫方式</a></li>
                <li><a href="#">其他</a></li>
            </ul>
        </nav>                                                                                                                                                                                                                                                                                                                                                                                                                        

 

 

JS:

            let aTages = document.getElementsByClassName('menutrigger')
            console.log(aTages)
            for(let i = 0; i < aTages.length; i++){
                aTages[i].onmouseenter = function(x){
                    console.log('mouseenter')
                    let a = x.currentTarget//這裡不用x.Target或者aTages[i]因為滑鼠位置有可能是在li也可能是在span等上面,這樣容易出現BUG,所以直接獲取當前操作對象
                    let brother = a.nextSibling//下一個節點(可能是回車,所以需要找到我們需要找的兄弟元素)-----------------------位置1
                    while(brother.nodeType ===3){ //若果兄弟元素類型是文本,詳細查看下麵圖片
                    //不使用if,這裡需要通過while迴圈排除其他一些非所需的兄弟元素,如span等
                    //使用while(brother.tagName !=='UL')也就是我們要找到是a的ul,如果不是就一直找,註意這的UL要大寫
                        brother = brother.nextSibling
                    }
                }
                aTages[i].onmouseleave = function(x){
                    console.log('mouseleave')

 

 

 

關於位置1

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 阿裡:MySQL資料庫規範 簡介:基於阿裡資料庫設計規範擴展而來 設計規範 1.【推薦】欄位允許適當冗餘,以提高查詢性能,但必須考慮數據一致。冗餘欄位應遵循: 不是頻繁修改的欄位。 不是 varchar 超長欄位,更不能是 text 欄位。 正例:商品類目名稱使用頻率高,欄位長度短,名稱基本一成不變 ...
  • Navicat 1142 SELECT command denied to user 'sx'@'xxx' for table 'user' 使用Navicat使用sx用戶連接資料庫時或者連接為用戶sx開放的資料庫travel_agency時,Navicat視窗彈出上述問題 ![](D:\博客園\隨 ...
  • MySQL 密碼參數配置與修改 validate_password 該文章匹配解決MySQL Error中的1819問題 場景 通過root用戶創建travel_agency資料庫,目標是,新建一個用戶然後對僅對該用戶開放travel_agency資料庫而非其他資料庫 過程 創建對所有ip開放的用戶 ...
  • 1. InnoDB支持事務, MyISAM不支持; 2. InnoDB支持外鍵, 而MyISAM不支持; 3. InnoDB是聚集索引,使用B+Tree作為索引結構,數據文件是和(主鍵)索引綁在一起的 MyISAM是非聚集索引, 也是使用B+Tree作為索引結構, 索引和數據文件是分離的, 索引保存 ...
  • 《第一行代碼》第二章總結 上一章總結是在看完後寫的,感覺遺漏很多,從這章起是邊閱讀邊總結。 由於有了新的事情,《第一行代碼》的總結要停一段時間,但不會太久。 手動創建活動 選擇 Add No Activity ,創建一個活動。 在res 下創建 layout 文件夾,在文件夾下創建 first_la ...
  • 效果預覽:https://li_shang_shan.gitee.io/imitated_millet_rotation 源碼下載:https://gitee.com/li_shang_shan/imitated_millet_rotation 結構代碼如下: <html> <head> <meta ...
  • // 獲取當前時間 getNowTime: function () { let dateTime let yy = new Date().getFullYear() let mm = new Date().getMonth() + 1 let dd = new Date().getDate() le ...
  • elementUI時間日期選擇器選擇完傳給後臺的是林尼治標準時間 直接將格林尼治時間作參數傳到下麵的方法,下麵的方法直接貼, // 格林尼治轉換yyyy-MM-dd HH:mm:ss GMTToStr (time) { console.log('time:' + time) let date = n ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...