Web API---DOM---節點的概念,屬性,和獲取相關的節點

来源:https://www.cnblogs.com/jane-panyiyun/archive/2019/12/06/11993377.html
-Advertisement-
Play Games

回顧概念 文檔: document 元素: 頁面中所有的標簽, 元素 element, 標簽 元素 對象 節點: 頁面中所有的內容(標簽,屬性,文本(文字,換行,空格,回車)) Node 根元素:html標簽 需求 用之前學習的知識點能否解決?獲取div中所有的標簽,設置每個標簽的背景顏色 節點 任 ...


回顧概念

文檔: document 元素: 頁面中所有的標簽, 元素---element,  標簽----元素---對象 節點: 頁面中所有的內容(標簽,屬性,文本(文字,換行,空格,回車))----Node 根元素:html標簽  

需求---用之前學習的知識點能否解決?獲取div中所有的標簽,設置每個標簽的背景顏色

節點---任意一個標簽中的元素獲取都非常的方便

 

節點的屬性

可以使用標簽--元素.出來 可以使用屬性節點.出來 文本節點.點出來   節點的類型 nodeType: 節點的類型: 1----標簽, 2---屬性, 3---文本 nodeName: 節點的名字: 標簽節點---大寫的標簽名字, 屬性節點---小寫的屬性名字, 文本節點----#text nodeValue: 節點的值: 標簽節點---null, 屬性節點---屬性值, 文本節點---文本內容  
 

獲取相關的節點

 

 

獲取父級節點和父級元素

.parentNode .parentElement  

獲取相關的節點屬性

.parentNode.nodeType   // 1  --------標簽 .parentNode.nodeName  // DIV-----大寫的標簽名字 .parentNode.nodeValue  // null------標簽  
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>title</title>

</head>
<body>
<div id="dv">
  <span>這是div中的第一個span標簽</span>
  <p>這是div中的第二個元素,第一個p標簽</p>
  <ul id="uu">
    <li>喬峰</li>
    <li>鹿茸</li>
    <li id="three">段譽</li>
    <li>卡卡西</li>
    <li>雛田</li>
  </ul>
</div>

<script src="common.js"></script>
<script>

  var ulObj=my$("uu");
  console.log(ulObj.parentNode);//div
  console.log(ulObj.parentNode.parentNode);//body
  console.log(ulObj.parentNode.parentNode.parentNode);//html
  console.log(ulObj.parentNode.parentNode.parentNode.parentNode);//document
  console.log(ulObj.parentNode.parentNode.parentNode.parentNode.parentNode);//null

//  //ul標簽的父級節點
//  console.log(ulObj.parentNode);
//  //ul標簽的父級元素
//  console.log(ulObj.parentElement);
//
//  console.log(ulObj.parentNode.nodeType);//標簽的---1
//  console.log(ulObj.parentNode.nodeName);//標簽---大寫的標簽名字
//  console.log(ulObj.parentNode.nodeValue);//標簽---null

</script>
</body>
</html>

 

獲取子節點和子元素

.childNodes // 7個

.children  //3個

 

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>title</title>

</head>

<body>
  <div id="dv">哦哦
    <span>這是div中的第一個span標簽</span>
    <p>這是div中的第二個元素,第一個p標簽</p>
    <ul id="uu">
      <li>喬峰</li>
      <li>鹿茸</li>
      <li id="three">段譽</li>
      <li>卡卡西</li>
      <li>雛田</li>
    </ul>
  </div>

  <script src="common.js"></script>
  <script>
    //div
    var dvObj = document.getElementById("dv");
    //子節點
    console.log(dvObj.childNodes);//7個子節點
    //子元素
    console.log(dvObj.children); //3
  </script>
</body>

</html>

 

獲取裡面的每個子節點

用for迴圈,長度是:.childNodes.length  
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>title</title>

</head>

<body>
  <div id="dv">哦哦
    <span>這是div中的第一個span標簽</span>
    <p>這是div中的第二個元素,第一個p標簽</p>
    <ul id="uu">
      <li>喬峰</li>
      <li>鹿茸</li>
      <li id="three">段譽</li>
      <li>卡卡西</li>
      <li>雛田</li>
    </ul>
  </div>

  <script src="common.js"></script>
  <script>
    //div
    var dvObj = document.getElementById("dv");
    //獲取裡面的每個子節點
    for (var i = 0; i < dvObj.childNodes.length; i++) {
      var node = dvObj.childNodes[i];
      //nodeType--->節點的類型:1---標簽,2---屬性,3---文本
      //nodeName--->節點的名字:大寫的標簽--標簽,小寫的屬性名---屬性,#text---文本
      //nodeValue-->節點的值:標簽---null,屬性--屬性的值,文本--文本內容
      console.log(node.nodeType + "=====" + node.nodeName + "====" + node.nodeValue);
    }

  </script>
</body>

</html>

 

認識下即可:獲取屬性的節點

.getAttributeNode("id")

//2====id====dv

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>title</title>

</head>

<body>
  <div id="dv">哦哦
    <span>這是div中的第一個span標簽</span>
    <p>這是div中的第二個元素,第一個p標簽</p>
    <ul id="uu">
      <li>喬峰</li>
      <li>鹿茸</li>
      <li id="three">段譽</li>
      <li>卡卡西</li>
      <li>雛田</li>
    </ul>
  </div>

  <script src="common.js"></script>
  <script>
    //div
    var dvObj = document.getElementById("dv");
    //獲取的是屬性的節點
    var node = dvObj.getAttributeNode("id");
    console.log(node.nodeType + "====" + node.nodeName + "====" + node.nodeValue);//2====id====dv

  </script>
</body>

</html>

 

12行代碼:都是獲取節點和元素的

前4個沒有相容問題

後面8個有

<body>
<div id="dv">哦哦
  <span>這是div中的第一個span標簽</span>
  <p>這是div中的第二個元素,第一個p標簽</p>
  <ul id="uu">
    <li>喬峰</li>
    <li>鹿茸</li>
    <li id="three">段譽</li>
    <li>卡卡西</li>
    <li>雛田</li>
  </ul>
</div>
<script src="common.js"></script>
<script>

  //12行代碼:都是獲取節點和元素的
  //ul
  var ulObj=document.getElementById("uu");
  //父級節點
  console.log(ulObj.parentNode);
  //父級元素
  console.log(ulObj.parentElement);
  //子節點
  console.log(ulObj.childNodes);
  //子元素
  console.log(ulObj.children);

 //我是分割線//
//第一個子節點 console.log(ulObj.firstChild);//------------------------IE8中是第一個子元素 //第一個子元素 console.log(ulObj.firstElementChild);//-----------------IE8中不支持 //最後一個子節點 console.log(ulObj.lastChild);//------------------------IE8中是第一個子元素 //最後一個子元素 console.log(ulObj.lastElementChild);//-----------------IE8中不支持 //某個元素的前一個兄弟節點 console.log(my$("three").previousSibling); //某個元素的前一個兄弟元素 console.log(my$("three").previousElementSibling); //某個元素的後一個兄弟節點 console.log(my$("three").nextSibling); //某個元素的後一個兄弟元素 console.log(my$("three").nextElementSibling); </script> </body>

 

 

總結獲取節點:

凡是獲取節點的代碼在谷歌和火狐得到的都是相關的節點 凡是獲取元素的代碼在谷歌和火狐得到的都是相關的元素 從子節點和兄弟節點開始, 凡是獲取節點的代碼在IE8中得到的是元素;而獲取元素的相關代碼, 在IE8中得到的是undefined,iE中不支持
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 例如 通過學生獲取學生所在學校信息,需要先查詢學生所在班級,再通過班級查詢所在學校信息。js代碼類似寫法如下: 寫了個類通過設置相關業務信號量來綁定觸發的方法,當信號變數改變時就會自動調用相應的方法,改進方法如下: flag 是個信號量設置對象,s.setFlag(flag, "canGetClas ...
  • JavaScript中的函數可以通過幾種方式創建,如下。 // 函數聲明 function getName() { return 'Michael' } // 函數表達式 const getName = function() { return 'Michael' } // 箭頭函數(同樣也是表達式) ...
  • 在vue項目中,假使我們在同一個路由下,只是改變路由後面的參數值,期望達到數據的更新。 getDetail()方法中會用到this.id這個參數,在同一頁面切換id的值,並不會觸發vue的聲明周期函數。 可以添加路由監聽: ...
  • 1、下拉框 下拉框選擇時,觸發事件的方法: 在 Ext.form.ComboBox 組件中新增 listeners 監聽事件 基本寫法為: listeners{'事件',function(){處理方法}} listeners:{ select:{ fn:function(combo,record,i ...
  • 根據 CSS Scroll Snap Module Level 1 規範,CSS 新增了一批能夠控制滾動的屬性,讓滾動能夠在僅僅通過 CSS 的控制下,得到許多原本需要 JS 腳本介入才能實現的美好交互。 Tips:本文截的一些 Gif 圖涉及容器滾動,效果不是很好,可以點進 Demo 里實際感受下 ...
  • 點擊操作 節點的方式 案例 案例1:點擊按鈕,設置p變色 節點的方式做 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>title</title> <style> div { width: 200px; he ...
  • 介紹 "Ayer" 是一個乾凈且優雅的Hexo主題,自帶響應式,載入速度很快,該有的功能都有,可配置項也很多,非常適合作為你的博客主題,主題內還附送了6張精美的高清壁紙。歡迎使用和Star支持,如果你在使用過程中有任何疑問或者建議,歡迎聯繫我! "項目地址" "效果預覽" "中文說明" 特性 乾凈且 ...
  • 移動京東項目練習記錄 1. 流式佈局與移動端適配的基本要求 2. 綁定事件的幾個方式 on 只能綁定一次事件,但是可以相容各種瀏覽器 addeventlistener 適合各種谷歌相關的瀏覽器,可以綁定多次事件 attachEvent 適合IE瀏覽器,可以多次綁定 但是裡面事件名有on eg:tou ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...