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
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如SQL伺服器的連接串或者是OAuth2的Secret等,這些敏感數據在代碼中是不太安全的,我們不應該在源代碼中存儲密碼和其他的敏感數據,一種推薦的方式是通過Asp.Net Core的機密管理器。 機密管理器 在 ASP.NET Core ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 順序棧的介面程式 目錄順序棧的介面程式頭文件創建順序棧入棧出棧利用棧將10進位轉16進位數驗證 頭文件 #include <stdio.h> #include <stdbool.h> #include <stdlib.h> 創建順序棧 // 指的是順序棧中的元素的數據類型,用戶可以根據需要進行修改 ...
  • 前言 整理這個官方翻譯的系列,原因是網上大部分的 tomcat 版本比較舊,此版本為 v11 最新的版本。 開源項目 從零手寫實現 tomcat minicat 別稱【嗅虎】心有猛虎,輕嗅薔薇。 系列文章 web server apache tomcat11-01-官方文檔入門介紹 web serv ...
  • C總結與剖析:關鍵字篇 -- <<C語言深度解剖>> 目錄C總結與剖析:關鍵字篇 -- <<C語言深度解剖>>程式的本質:二進位文件變數1.變數:記憶體上的某個位置開闢的空間2.變數的初始化3.為什麼要有變數4.局部變數與全局變數5.變數的大小由類型決定6.任何一個變數,記憶體賦值都是從低地址開始往高地 ...
  • 如果讓你來做一個有狀態流式應用的故障恢復,你會如何來做呢? 單機和多機會遇到什麼不同的問題? Flink Checkpoint 是做什麼用的?原理是什麼? ...
  • C++ 多級繼承 多級繼承是一種面向對象編程(OOP)特性,允許一個類從多個基類繼承屬性和方法。它使代碼更易於組織和維護,並促進代碼重用。 多級繼承的語法 在 C++ 中,使用 : 符號來指定繼承關係。多級繼承的語法如下: class DerivedClass : public BaseClass1 ...
  • 前言 什麼是SpringCloud? Spring Cloud 是一系列框架的有序集合,它利用 Spring Boot 的開發便利性簡化了分散式系統的開發,比如服務註冊、服務發現、網關、路由、鏈路追蹤等。Spring Cloud 並不是重覆造輪子,而是將市面上開發得比較好的模塊集成進去,進行封裝,從 ...
  • class_template 類模板和函數模板的定義和使用類似,我們已經進行了介紹。有時,有兩個或多個類,其功能是相同的,僅僅是數據類型不同。類模板用於實現類所需數據的類型參數化 template<class NameType, class AgeType> class Person { publi ...
  • 目錄system v IPC簡介共用記憶體需要用到的函數介面shmget函數--獲取對象IDshmat函數--獲得映射空間shmctl函數--釋放資源共用記憶體實現思路註意 system v IPC簡介 消息隊列、共用記憶體和信號量統稱為system v IPC(進程間通信機制),V是羅馬數字5,是UNI ...