HTML DOM 學習

来源:https://www.cnblogs.com/wangyuyang1016/archive/2019/11/27/11944503.html
-Advertisement-
Play Games

HTML DOM 學習 By: Mirror王宇陽 E mail:[email protected] 博客主頁:https://www.cnblogs.com/wangyuyang1016/ DOM 文檔對象模型 DOM簡單來說就是文檔對象模型,當一個HTML頁面被載入就會創建HTML頁面的DOM ...


HTML DOM 學習

By: Mirror王宇陽

E-mail:[email protected]

博客主頁:https://www.cnblogs.com/wangyuyang1016/

DOM 文檔對象模型

DOM簡單來說就是文檔對象模型,當一個HTML頁面被載入就會創建HTML頁面的DOM

DOM對象結構樹

JavaScript的“權利”:

  • 改變頁面中DOM的所用的HTML元素
  • 改變頁面中DOM的所用的HTML屬性
  • 改變頁面中DOM的所用的CSS樣式
  • 添加/刪除DOM中所用的HTML元素、屬性和CSS樣式屬性
  • 對頁面中所有已存在的HTML事件作出反應
  • 可以在DOM中創建新的HTML事件

DOM的特性:

  • 整個HTML頁面文檔就是一個文檔節點(只存在一個 <html>根元素)
  • 每一個HTML內的標簽是一個元素節點
  • 每一個HTML元素中的文本是文本節點
  • 每一個HTML屬性中的內容是屬性節點
  • 註釋內容屬於註釋節點

DOM的節點:

  • doucument 文檔節點;HTML文檔的父節點,DOM文檔的根節點
  • element 元素節點;元素節點擁有自己的屬性節點
  • attr 屬性節點;以element作為父節點
  • text 文本節點;可作為獨立節點存在,是終節點
  • conmment 註釋節點;解釋HTML的註釋類信息

document 對象

獲取元素對象的方法:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <h3>I love HCIT</h3>
        <div id="info" class="bd">
            <h2>Hello,World!</h2>
            <h3>I'am Mirror王宇陽 is student</h3>
        </div>
        <script>
            var id = document.getElementById("info");
            var tag= document.getElementsByTagName("h3");// 全局
            var idtag = id.getElementsByTagName("h3"); // div_info標簽中的h3
            var classt = document.getElementsByClassName("bd");
            
            console.log(id);
            console.log(tag[0]);
            console.log(idtag[0].innerHTML);
            console.log(classt);
            console.log(classt[0].innerHTML);
        </script>
    </body>
</html>
document.getElementsById()
  • 返回指定標簽ID名的元素
document.getElementsByName()
  • 返回指定標簽Name名的元素
document.getElementsByTagName()
  • 返回指定標簽類型名的元素
document.getElementsByClassNam()
  • 返回指定標簽Class名的元素

上述四種常見的獲取元素對象標簽的方法,都不具有絕對的唯一性

當我們獲取元素對象標簽元素的時候,方法返回的是自己查找的所有內容以數組返回

我們需要使用數組下標的方式獲取讀取唯一的元素

另外,我們可以利用節點的關係來對元素標簽獲取進行規範和控制,例如:
我們獲取的內容在div中的table中的th標簽中的元素,那麼我們使用
getElementsByTagName()方法獲取所有th標簽,那麼HTML頁面中無數的th標簽都會被獲取
我們可以使用getElenemtsById()先定位目標div標簽,再通過getElementsByTagName()方法獲取th標簽元素

對象元素讀寫特性:

1573632737286

innerHTML
  • 表示對象元素所包含的文本和HTML代碼內容
innerText
  • 表示起始標簽和結束標簽之間的純文本內容
outerHTML
  • 整個DOM節點的HTML和文本內容,包含標簽自身
outerText
  • 表示起始標簽和結束標簽之間的純文本內容

DOM對象節點操作:

創建節點
createElement():創建元素節點

返回新節點的對象引用,參數是創建的元素節點的標簽名

var newElement = document.createElement("a"); // 創建一個<a>標簽元素節點
createTextNode():創建文本節點

返回新節點的對象引用,參數是string並添加為節點的文本

var newText = document.createTextNode("百度一下");//創建一個baidu文本節點
createAttribute():創建屬性節點

返回新節點的對象引用,參數是新節點的屬性名。

屬性節點必須要求以element元素節點為父類節點

var newAttr = document.createAttribute("href"); //創建一個color屬性節點
newAttr.value = "http://www.baidu.com";
添加節點
appendChild()

添加新節點到方法所屬節點的尾部,參數為新添加的子節點對象;

適合元素節點、文本節點的添加

newElement.appendChild(newText);// newElement節點添加文本節點newText
document.body.appendChild(newElement);// body標簽中添加newElement節點
setAttributeNode()

添加新屬性節點到方法所屬節點的屬性集合中,參數為新添加的子節點對象;

newElement.setAttributeNode(newAttr);//newElement添加newAttr屬性節點
insertBefore()
insertBefore(node1,node2);

將node1新節點插入到相對節點node2的前面作為方法所屬節點的子節點

刪除節點
removeChild()

刪除節點,參數是需要刪除的節點node;該方法的所屬節點對象是node的父節點

element.removeChild(node);
替換節點
replaceChild()
element.replaceChild(node1,node2);

node1節點替換原節點node2;該方法的所屬節點對象是node的父節點

複製節點
cloneNode()

賦值一個節點,返回覆制後的節點引用;參數為布爾值,true/false表示是否克隆該節點所喲子節點。

element.cloneNode(bool);

返回值是一個克隆的節點

var node = newElement.cloneNode(true); //複製一個節點

導航節點

firstChild : 返回第一個子節點對象內容

console.log(d1.firstChild.innerHTML);

lastChild : 返回最後的子節點對象內容

console.log(d1.lastChild.innerHTML);

parentNode : 返回子節點的父節點對象

console.log(d1.parentNode);

childNodes : 返回指定子節點對象的全部集合

console.log(d1.childNodes)
console.log(d1.childNodes.length)

children : 返回對象元素子節點的對象集合

console.log(d1.children)
console.log(d1.children.length);

nodeType : 返回節點類型 (3-文本節點 1-元素節點)

for (var i = 0 ; i < demo.childNodes.length ; i++) {
    if (demo.childNodes[i].nodeType == 3) {
        textNode ++;
    } else if(demo.childNodes[i].nodeType == 1){
        elementNode ++; 
    }
}

DOM事件

事件觸發條件
事件屬性 事件說明 觸發
onblur 失去焦點時 鍵盤、滑鼠、blur方法
onfocus 獲得焦點時 鍵盤、滑鼠、focus方法
onchange 修改內容時 鍵盤、滑鼠、賦值語句
onclick 滑鼠單擊時 鍵盤、滑鼠、click方法
ondblclick 滑鼠雙擊時 滑鼠
onkeydown 鍵盤按下 鍵盤
onkeypress 鍵盤按鍵(按/松) 鍵盤
onkeyup 鍵盤抬起 鍵盤
onmousedown 滑鼠按下時 滑鼠
onmousemove 滑鼠移動時 滑鼠
onmouseup 滑鼠抬起時 滑鼠
onmouseout 滑鼠移出時 滑鼠
onmouseover 滑鼠移入時 滑鼠
onload 載入時 系統
onsubmit 表單提交時 鍵盤、滑鼠、submit方法
onreset 表單重置時 鍵盤、滑鼠、reset方法
event對象屬性

當事件發生時會產生事件對象,事件對象得作用時用來記錄事件發生得關鍵信息

屬性 說明 條件
altKey、ctrlKey、shiftKey 是否按下Alt、Ctrl、Shift鍵 鍵盤滑鼠
button 滑鼠按鈕是否按下 滑鼠
keyCode 鍵盤按鍵時unicode值 鍵盤
clientX、clientY 滑鼠在視窗區得坐標 滑鼠
offsetX、offsetY 滑鼠相對事件觸發的坐標 滑鼠
srcElement 事件觸發者 事件

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

-Advertisement-
Play Games
更多相關文章
  • 問題描述:要在sqlplus中啟動到startup狀態,但是提示我沒有監聽,本來以為啟動一下就可以,但是connecting to一直卡半天,stop都停止不了 1.發現監聽有問題,前去更改 SQL> startupORA-00119: invalid specification for syste ...
  • [20191127]探究等待事件的本源4.txt--//昨天使用ash_wait_chains.sql腳本把各個生產庫執行1遍,才發現我對一套系統性能理解錯誤.--//我一直以為這套系統存儲有點問題,性能不是很好.1.環境:xxxxxx> @ ver1PORT_STRING VERSION BANN ...
  • private boolean isForeground() { ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager. ...
  • https://www.jianshu.com/p/b57ece2b44fd https://blog.csdn.net/u010391437/article/details/75126310 ...
  • 未經允許,禁止🚫轉載,轉載請註明出處:https://www.cnblogs.com/YyyyQ/p/11941537.html 第1步:WIN+R輸出cmd進入命令行 找到JDK安裝路徑進入bin文件夾 第2步:輸入 keytool.exe -list -keystore 加 debug.key ...
  • layui-table-column-select 在layui table的基礎上對錶格列進行擴展:點擊單元格顯示可搜索下拉列表。 碼雲地址:https://gitee.com/kkk12/layui-table-select 一、介紹 此項目是為瞭解決layui table表格單元格(colum ...
  • CSS中的選擇器優先順序與!important權重使用 選擇器要高於標簽選擇器。 選擇器要高於 選擇器。 標簽選擇器是優先順序最低的選擇器。 的屬性它的權重值優先順序最高的,大於所有的選擇器。 標簽選擇器和.class選擇器 讓我們進入標簽選擇器和 選擇器誰的優先順序高實踐,實踐內容如:將 頁面中的 標簽設 ...
  • CSS樣式繼承介紹 外層元素身上的樣式會被內層元素所繼承。 當內層元素身上的樣式與外層的元素身上的樣式相同時內層元素樣式會覆蓋外層元素樣式。 並不是所有的樣式都能夠繼承,只有文本與字體樣式屬性才能夠被繼承,其餘的樣式屬性不可以被繼承。 CSS樣式繼承實踐 外層元素身上的樣式會被內層元素所繼承,這句話 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...