DOM的相關概念

来源:http://www.cnblogs.com/DF-fzh/archive/2016/04/03/5348735.html
-Advertisement-
Play Games

【前面的話】DOM全稱是Document Object Model,即文檔對象模型。我們常說的html文檔其實就是一個DOM樹,DOM操作就是在記憶體中找到DOM樹上我們想要的DOM對象,對它的屬性進行修改,然後渲染引擎會把修改的結果重新繪製在界面上。DOM裡面涵蓋的知識點還是很多的,尤其是到後來要兼 ...


【前面的話】DOM全稱是Document Object Model,即文檔對象模型。我們常說的html文檔其實就是一個DOM樹,DOM操作就是在記憶體中找到DOM樹上我們想要的DOM對象,對它的屬性進行修改,然後渲染引擎會把修改的結果重新繪製在界面上。DOM裡面涵蓋的知識點還是很多的,尤其是到後來要相容瀏覽器的時候是很繞的,這次先講一些DOM的相關概念,等聊完BOM之後,我會再針對相容瀏覽器這塊做個小總結。

1、節點的屬性:

① nodeType

//節點
//nodeType  1-元素節點 , 2-屬性節點 ,  3-文本節點

② nodeName

// nodeName 如果是標簽則返回的是標簽的名稱;如果是文本則返回的是#text;如果是屬性節點則返回屬性的名稱

③ nodeValue

// nodeValue 如果是標簽則始終返回null ; 如果是文本節點則返迴文本的內容 ;  如果是屬性節點則返回屬性的值

④節點的複製

    element.cloneNode();    // 克隆一個新的DOM對象;參數為Boolean類型,true賦值子節點,false不複製子節點
    element.appendChild();  // 追加元素
2、自定義屬性:
    2.1 任何瀏覽器都可以通過dom對象獲取到標簽的預定義屬性     2.2 chrome,新版IE(9及以上)無法獲取標簽的自定義屬性;但IE8以前是可以通過dom對象獲取到標簽的自定義屬性     2.3 如何在任何瀏覽器中顯示自定義屬性呢??             ——getAttribute可以獲取標簽的預定義屬性;通過自定義屬性獲得的類型都是String             ——設置屬性的值:element.setAttribute(name,value)             ——移除屬性:element.removeAttribute(name) 附:
1 element.className = " ";     //僅刪除class類的值,保留類名
2 element.removeAttribute("class")   //完全刪除這個類
    2.4 屬性的相關操作
1 // 獲取屬性節點
2     var attrNode = box.getAttributeNode("id");
3     console.log(attrNode.nodeType);   //屬性節點的nodeType   2
4     console.log(attrNode.nodeName);   //屬性節點的nodeName 屬性的名稱
5     console.log(attrNode.nodeValue);   //屬性節點的nodeValue 屬性的值
6         
7  // 設置屬性  setAttribute
8         
9  //  移除屬性  removeAttribute
3、層次結構
——父節點:parentNode     ① 子節點: 
1 childNodes  所有的子節點——DOM標準的方法,除了獲取子標簽以外,還會獲取文本節點;IE8以前會忽略空白節點
2 children  所有的子元素——非標準的DOM方法,但是幾乎所有的瀏覽器都支持,只會獲取元素節點
    ② 兄弟節點,所有瀏覽器都支持
1  element.nextSibling 下一個兄弟節點,可能是非元素節點,會獲取到文本節點
2  element.nextElementSibling 獲取下一個緊鄰的兄弟元素,會忽略空白   // IE8以前不支持此屬性
3         
4  element.previousSibling  上一個兄弟節點,可能是非元素節點,會獲取到文本節點
5  element.previousSibling 獲取上一個緊鄰的兄弟元素,會忽略空白  // IE8以前不支持此屬性
    ③兄弟元素,IE8以前不支持
1  previousElementSibling 上一個兄弟節點
2  nextElementSibling  下一個兄弟節點

 

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

-Advertisement-
Play Games
更多相關文章
  • 這個問題讓我糾結了幾個小時,剛開始還以為是JS有問題,一直排查排查,,最後發現,是thinkphp3.2.3把JS正則的反斜杠\過濾掉了,導致JS正則失效,比如\d{4},解析出來變成了d{4} 解決辦法是可以用兩個反斜杠\\,比如\d{4}寫成 \\d{4}即可 ...
  • 效果: 需求和分析: 1.點擊TreeView中的節點,Listview中顯示相應的電視節目,其中節目的信息都儲存在xml文件中(IO的應用) 2.在“所有電臺”中選中節點右擊可進行添加到“我的電臺”,同時在”我的電臺“也可進行刪除,在你退出後,系統會把你選擇的”我的電臺“中的記錄記錄,在你再次打開 ...
  • 不談抽象類可以有實現等語法糖的問題,本文主要講在語義層面抽象類和介面的本質區別、以及使用以及選擇。 一、介紹 抽象類,首先是個類,類是對現實世界中對象的建模模型,抽象類是對類整體的抽象描述,包含方法,以及屬性。介面是對類某特性行為的抽象。 對抽象類的繼承才是Is-A的關係,對介面的實現,則是“有沒有 ...
  • 繼承是Is-A的關係。曾經看到有人為了復用而使用了繼承:有一個Base類,裡面寫了很多Common的方法,很多類繼承自這個類,這種做飯就是把Has-A用Is-A來實現的。 繼承的概念是說一個類是另一個類的特化。 Liskov替換原則:派生類必須能夠通過基類的介面而被使用,且使用者無需瞭解兩者之間的差 ...
  • × 目錄 [1]定義 [2]過渡屬性 [3]持續時間[4]延遲時間[5]時間函數[6]多值[7]階段[8]觸發[9]API 前面的話 通過過渡transition,可以讓web前端開發人員不需要javascript就可以實現簡單的動畫交互效果。過渡屬性看似簡單,但實際上它有很多需要註意的細節和容易混 ...
  • 一:純css+html的手風琴效果 這種用css寫的手風琴比較簡單,主要是應用到css中的,transition屬性。 代碼如下: 二:純js+html製作手風琴 這個手風琴出現一個問題,就是單獨移動每個li時,沒問題,但是當移動很快時,最右邊的li出現空隙。我感覺是定時器的問 題,就是當每個li還 ...
  • 一、六中數據類型: 二、運算符和表達式 七種運算符 三、程式控制語句 註:do-while迴圈至少執行一次迴圈體;break語句可以跳出迴圈語句;continue語句可以跳過迴圈內剩餘的語句進入下一次迴圈;label語句用於為語句添加標號 ...
  • basket.js 源碼分析 一、前言 basket.js 可以用來載入js腳本並且保存到 LocalStorage 上,使我們可以更加精準地控制緩存,即使是在 http 緩存過期之後也可以使用。因此可以使我們防止不必要的重新請求 js 腳本,提升網站載入速度。 可以到 basket.js 的 "G ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...