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
  • 前言 在我們開發過程中基本上不可或缺的用到一些敏感機密數據,比如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 ...