DOM操作

来源:https://www.cnblogs.com/sunchao0709/archive/2019/11/11/11833551.html
-Advertisement-
Play Games

1.什麼是window? window:是一個全局對象, 代表瀏覽器中一個打開的視窗, 每個視窗都是一個window對象2.什麼是document? document是window的一個屬性, 這個屬性是一個對象 document: 代表當前視窗中的整個網頁, document對象保存了網頁上所有的 ...


1.什麼是window?

window:是一個全局對象, 代表瀏覽器中一個打開的視窗, 每個視窗都是一個window對象

2.什麼是document?

document是window的一個屬性, 這個屬性是一個對象

document: 代表當前視窗中的整個網頁,

document對象保存了網頁上所有的內容, 通過document對象就可以操作網頁上的內容

3.什麼是DOM?

DOM 定義了訪問和操作 HTML文檔(網頁)的標準方法

DOM全稱: Document Object Model, 即文檔模型對象

所以學習DOM就是學習如何通過document對象操作網頁上的內容

4.獲取Dom元素

  • 通過id獲取指定元素:document.getElementById("");
  • 通過class名稱獲取:document.getElementsByClassName("father");
  • 通過name名稱獲取:document.getElementsByName("test");
  • 通過標簽名稱獲取:document.getElementsByTagName("div");
  • 通過選擇器獲取:document.querySelector("#box");  註意:(querySelector只會返回根據指定選擇器找到的第一個元素) document.querySelectorAll(".father");  註意:(querySelectorAll會返回指定選擇器找到的所有元素)

5.節點

DOM對象(document), 這個對象以樹的形式保存了界面上所有的內容,HTML頁面每一部分都是由節點(標簽(元素),文本,屬性)

獲取指定節點中的第一個子節點
let oDiv = document.querySelector("div");
console.log(oDiv.firstChild);
獲取指定元素中的第一個子元素
console.log(oDiv.firstElementChild);

獲取指定節點中最後一個子節點
console.log(oDiv.lastChild);
獲取指定元素中最後一個子元素
console.log(oDiv.lastElementChild);

通過子元素獲取父元素/父節點
let item = document.querySelector(".item");
console.log(item.parentElement);
console.log(item.parentNode);
let parentEle = item.parentElement || item.parentNode;
console.log(parentEle);

獲取相鄰上一個節點
console.log(item.previousSibling);
獲取相鄰上一個元素
console.log(item.previousElementSibling);

獲取相鄰下一個節點
console.log(item.nextSibling);
獲取相鄰下一個元素
console.log(item.nextElementSibling);

 

6:節點的增刪改查

1.創建節點
let oSpan = document.createElement("span");
console.log(oSpan);
console.log(typeof oSpan);

2.添加節點
註意點: appendChild方法會將指定的元素添加到最後
let oDiv = document.querySelector("div");
oDiv.appendChild(oSpan)
let oA = document.createElement("a");
oDiv.appendChild(oA);

3.插入節點
let oSpan = document.createElement("span");
let oDiv = document.querySelector("div");
let oH1 = document.querySelector("h1");
let oP = document.querySelector("p");
oDiv.insertBefore(oSpan, oH1);
oDiv.insertBefore(oSpan, oP);

4.刪除節點
註意點: 在js中如果想要刪除某一個元素,元素是不能自殺的,只能通過對應的父元素來刪除
console.log(oSpan.parentNode);
oSpan.parentNode.removeChild(oSpan);
oDiv.parentNode.removeChild(oDiv);

5.克隆節點
註意點: cloneNode方法預設不會克隆子元素, 如果想克隆子元素需要傳遞一個true
let oDiv = document.querySelector("div");
let newDiv = oDiv.cloneNode();
let newDiv = oDiv.cloneNode(true);
console.log(newDiv);

 

7.元素屬性操作

原理:無論是通過document創建還是查詢出來的標簽,系統都會將元素包裝成一個對象返回給我們,系統在包裝這個對象的時候會自動將元素的屬性都包裝到這個對象中,所以只要拿到這個對象就可以拿到標簽屬性,操作標簽屬性

 

let oImg = document.querySelector("img");
let oImg = document.createElement("img");
console.dir(oImg);


// 1.如何獲取元素屬性
let oImg = document.querySelector("img");
// console.log(oImg.alt);
// console.log(oImg.getAttribute("alt"));
// 註意點: 通過對象.屬性名稱的方式無法獲取到自定義屬性的取值
//         通過getAttribute方法可以獲取到自定義屬性的取值
console.log(oImg.nj);
console.log(oImg.getAttribute("nj"));


// 2.如何修改元素屬性
let oImg = document.querySelector("img");
// oImg.title = "新的title";
// oImg.setAttribute("title", "新的title222");
// 註意點和獲取元素屬性一樣
// oImg.nj = "123";
oImg.setAttribute("nj", "123");


// 3.如何新增元素屬性
let oImg = document.querySelector("img");
// oImg.it666 = "itzb";
// 註意點: setAttribute方法如果屬性不存在就是新增, 如果屬性存在就是修改
oImg.setAttribute("it666", "itzb");


// 4.如何刪除元素屬性
let oImg = document.querySelector("img");
// oImg.alt = "";
// oImg.removeAttribute("alt");
// 註意點和獲取元素屬性一樣
// oImg.nj = "";
oImg.removeAttribute("nj");

 

 8.元素內容操作

// 1.獲取元素內容
1.innerHTML獲取的內容包含標簽, innerText/textContent獲取的內容不包含標簽
2.innerHTML/textContent獲取的內容不會去除兩端的空格, innerText獲取的內容會去除兩端的空格

let oDiv = document.querySelector("div");
console.log(oDiv.innerHTML);
console.log(oDiv.innerText);
console.log(oDiv.textContent);

// 2.設置元素內容
特點:
無論通過innerHTML/innerText/textContent設置內容, 新的內容都會覆蓋原有的內容
區別:
如果通過innerHTML設置數據, 數據中包含標簽, 會轉換成標簽之後再添加
如果通過innerText/textContent設置數據, 數據中包含標簽, 不會轉換成標簽, 會當做一個字元串直接設置

let oDiv = document.querySelector("div");
// oDiv.innerHTML = "123";
// oDiv.innerText = "456";
// oDiv.textContent = "789";
//  oDiv.innerHTML = "<span>我是span</span>";
//  oDiv.innerText = "<span>我是span</span>";
//  oDiv.textContent = "<span>我是span</span>";

setText(oDiv, "www.it666.com");
function setText(obj, text) {
    if("textContent" in obj){
        obj.textContent = text;
    }else{
        obj.innerText = text;
    }
}

 

9.操作元素樣式

// 1.設置元素樣式
let oDiv = document.querySelector("div");
// 第一種方式
// 註意點: 由於class在JS中是一個關鍵字, 所以叫做className
// oDiv.className = "box";
// 第二種方式
// 註意點: 過去CSS中通過-連接的樣式, 在JS中都是駝峰命名
// 註意點: 通過JS添加的樣式都是行內樣式, 會覆蓋掉同名的CSS樣式
oDiv.style.width = "300px";
oDiv.style.height = "300px";
oDiv.style.backgroundColor = "blue";

// 2.獲取元素樣式
let oDiv = document.querySelector("div");
// oDiv.style.width = "300px";
// 註意點: 通過style屬性只能過去到行內樣式的屬性值, 獲取不到CSS設置的屬性值
// console.log(oDiv.style.width);
// 註意點: 如果想獲取到CSS設置的屬性值, 必須通過getComputedStyle方法來獲取
// getComputedStyle方法接收一個參數, 這個參數就是要獲取的元素對象
// getComputedStyle方法返回一個對象, 這個對象中就保存了CSS設置的樣式和屬性值
let style = window.getComputedStyle(oDiv);
console.log(style.width);

 

 

 


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

-Advertisement-
Play Games
更多相關文章
  • 問題:文本框輸入完成後點擊回車頁面刷新問題出在form上,當表單中只有一個文本框的時候獲取焦點並點擊回車之後會提交表單內容,就會發生刷新事件。 解決方法: 1、增加一個隱藏的輸入框 增加了一個隱藏的輸入框之後,表單的文本框不再是唯一的,回車不會觸發提交事件 2、去掉輸入框的回車事件 但是有的需求又要 ...
  • 國瑞前端: js確定取消,在html界面中,有css模擬的模態框,這樣顯示的就會更好看一些,那麼javascript有沒有自帶的彈框呢,當然是有的,接下來我就來給大家介紹一下把: js確定取消-警告框alert() 起到警告作用 js確定取消-確認框confirm() 123456789101112 ...
  • 響應式佈局 一個網站能夠相容多個終端,並且在各個終端都可以很好展示體驗。 媒體類型 在何種設備或者軟體上將頁面打開 123456789 all:所有媒體braille:盲文觸覺設備embossed:盲文印表機print:手持設備projection:印表機預覽screen:彩屏設備speech:'聽 ...
  • 小程式由來 當初結婚,為了給媳婦驚喜,藉助雲開發的推廣,自己做了一個結婚用的邀請函小程式,結完婚後,趁著空閑時間,希望把之前使用的邀請函小程式留存下來,所以做了一次整體改版。改版後的小程式我自己定義為相冊類小程式,主要放一些自己喜歡的照片。 小程式功能 首頁相冊 愛的空間相冊 陌生人的到訪 陌生人的 ...
  • 中間件是什麼呢? 中間件就是客戶端http請求發起傳送到伺服器和伺服器返迴響應之間的一些處理函數。 為什麼要使用中間件? 通過中間件,可以對數據進行操作使得我們能方便地操作請求數據編寫伺服器響應。如body-parse中間件對post請求的參數進行處理讓我們可以通過res.body快速獲取請求參數, ...
  • 一、項目簡介 uni-liveShow是一個基於vue+uni-app技術開發的集小視頻/IM聊天/直播等功能於一體的微直播項目。界面仿製抖音|火山小視頻/陌陌直播,支持編譯到多端(H5、小程式、App端) 且相容效果一致。 二、效果預覽 在H5、小程式、App端測試效果如下:(後續大圖均為APP端 ...
  • 最近在工作中遇到了一個百度地圖api中的難題,恐怕有的程式員可能也遇到過。就是實時定位並顯示軌跡,網上大部分都是通過創建polyline對象貼到地圖上。當然,百度地圖的畫線就是這樣實現的,但是好多人會發現,如果數據量超過四五千的話,瀏覽器可能就要卡了,後面可能就直接因為瀏覽器記憶體不足直接崩潰。按理講 ...
  • 文字摺疊效果 1. 效果展示 2. 實現過程 ~~~html H e l l o W o r l d ~~~ 填充內容 CSS佈局 ~~~css { margin:0px; padding:0px; } body{ background color:aquamarine; width:100%; h ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...