在學習JavaScript過程中會遇到js取得元素的問題,本篇將會對其取得元素的方法進行解說。
在實際前端開發工作中,我們經常會遇到要取得某些元素,以達到更新該元素的樣式、內容等目的。而文檔物件模型(DOM) 是HTML和XML文檔的程式設計接口,它提供了對文檔的結構化的表述,並定義了一種方式可以從程式中對該結構進行訪問,從而改變文檔的結構,樣式和內容。 DOM 將文件解析為一個由節點和物件(包含屬性和方法的物件)組成的結構集合,它會將web頁面和腳本或程式語言連接起來。也因此,JavaScript可以透過DOM API取得元素節點,方法有以下幾種:其中querySelector()和querySelectorAll()為ES5的元素選擇方法
1、getElementById():
接收一個參數:要取得的元素的ID(區分大小寫,必須嚴格匹配),傳回一個Element物件(也可看作是動態NodeList集合,只是集合中只包含一個符合的元素,但也會即時反映DOM節點的變化),若目前文件中擁有特定ID的元素不存在則傳回nul。
語法:
element = document.getElementById(id);
範例:刪除
<body> <div id="myDiv"> <p class="myP">hello world</p> <p class="myP">hello dolby</p> <p class="myP">hello dot</p> <p class="myP">hello bean</p> </div> <script> var div = document.getElementById("myDiv"); console.log(div); //(1) var body=document.querySelector('body'); body.removeChild(div); console.log(body); //(2) </script></body> //(1)处打印值 <div id="myDiv"> <p class="myP">hello world</p> <p class="myP">hello dolby</p> <p class="myP">hello dot</p> <p class="myP">hello bean</p> </div>//(2)处打印值<body> <script> var div = document.getElementById("myDiv"); console.log(div); //(1) var body=document.querySelector('body'); body.removeChild(div); console.log(body); //(2) </script></body>
範例:
<!DOCTYPE html><html><head> <title>getElementById example</title> <script> function changeColor(newColor) { var elem = document.getElementById("para1"); elem.style.color = newColor; } </script></head><body> <p id="para1">Some text here</p> <button onclick="changeColor('blue');">blue</button> <button onclick="changeColor('red');">red</button></body></html>
getElementById( )方法不會搜尋不在文件中的元素。當建立一個元素且指派ID後,必須要使用insertBefore()或其他類似的方法把元素插入到文件中之後才能使用getElementById() 取得到:
var element = document.createElement("div"); element.id = 'testqq';var el = document.getElementById('testqq'); // el will be null!
2、getElementsByClassName():
接收一個參數,即包含一個或多個類別名稱的字串(類別名稱透過空格分隔),傳回一個HTMLCollection動態集合(也可以說傳回一個NodeList類別陣列物件),集合中包含以目前元素為根節點,所有指定class 名的子元素。
語法:
var elements = document.getElementsByClassName(names); var elements = rootElement.getElementsByClassName(names);
getElementsByClassName 可以在任意的元素上調用,而不僅僅是document。呼叫這個方法的元素將作為本次尋找的根元素。
範例:
取得所有class 為'test' 的元素:
document.getElementsByClassName('test');
//html代码<div class="myDiv"> <p class="myP">hello world</p> <p class="myP">hello dolby</p> <p class="myP">hello dot</p> <p class="myP">hello bean</p> </div> //js代码一 <script> var div = document.getElementsByClassName("myDiv"); console.log(div); //(3) var p = document.getElementsByClassName("myP"); for (var i = 0; i < p.length; i++) { div[0].removeChild(p[i]); } console.log(p); //(4) </script>/ /(3)處列印值
[div.myDiv] //一個動態的HTMLCollection集合,長度為1,innerHTML為
hello dolby
,hello bean
,為什麼沒有其他兩個p元素一會兒解釋。//(4)處列印值
[p.myP,p.myP] //一個動態的HTMLCollection集合,長度為2,innerHTML分別為"hello dolby","hello bean" 。
以上用刪除節點的方法驗證了getElementsByClassName方法傳回的是一個HTMLCollection動態集合。 ⬆️以上程式碼中,首先div取得了頁面中類別名為"myDiv"的元素組成的動態集合,p取得了頁面中類別名為"myP"的元素組成的動態集合,接著用一個for迴圈來刪除"myDiv"集合中第一項(即上例中唯一的div元素)中的"myP"集合中的每一項,結果只有第一項和第三項被刪除了,這是為什麼呢?
原因是動態集合中DOM結構的變化能夠自動反映到所保存的物件中,最開始p.legth=4,當i=0時刪除了頁面中第一個p元素,此後p.length= 3;i=1時刪除了剩餘的三個p中的項目索引為1的項,此後p.length=2;i=2時已不滿足i
還是一個for循環搞定⬇️,每次刪除物件集合中的最後一項就可以啦~
//js代码二 <script> var div = document.getElementsByClassName("myDiv")[0]; console.log(div); //(5) var p = document.getElementsByClassName("myP"); for (var i=p.length;i--;){ div.removeChild(p[i]); } console.log(p); //(6) </script> //(5)处打印值<div class="myDiv"></div>//(6)处打印值[] //空的HTMLCollection集合,长度为03、getElementsByTagName():接收一個參數:要取得的元素的標籤名稱(不區分大小寫),傳回一個HTMLCollection動態集合(也可以說回傳一個NodeList類別陣列物件),集合中包含以目前元素為根節點(不包括目前元素本身),所有指定標籤名稱的子元素,子元素的順序是在目前元素的子樹中出現的順序,如果沒有搜尋到元素則集合為空。
語法:
// check the alignment on a number of cells in a table. var table = document.getElementById("forecast-table"); var cells = table.getElementsByTagName("td"); for (var i = 0; i < cells.length; i++) { var status = cells[i].getAttribute("data-status"); if ( status == "open" ) { // grab the data } }範例:刪除
<body> <div id="myDiv"> <p class="myP">hello world</p> <p class="myP">hello dolby</p> <p class="myP">hello dot</p> <p class="myP">hello bean</p> </div> <script> var div = document.getElementById("myDiv"); console.log(div); //(7) var p = document.getElementsByTagName("p");//
以下for循环改为for (var i=0,len=p.length;i
div.removeChild(p[i]);
} console.log(p); //(8)
以上是JS取得元素的N種方法及其動態討論的詳細內容。更多資訊請關注PHP中文網其他相關文章!

javaandjavascriptaredistinctlanguages:javaisusedforenterpriseandmobileapps,while javascriptifforInteractiveWebpages.1)JavaisComcompoppored,statieldinglationallyTypted,statilly tater astrunsonjvm.2)

JavaScript核心數據類型在瀏覽器和Node.js中一致,但處理方式和額外類型有所不同。 1)全局對像在瀏覽器中為window,在Node.js中為global。 2)Node.js獨有Buffer對象,用於處理二進制數據。 3)性能和時間處理在兩者間也有差異,需根據環境調整代碼。

JavaScriptusestwotypesofcomments:single-line(//)andmulti-line(//).1)Use//forquicknotesorsingle-lineexplanations.2)Use//forlongerexplanationsorcommentingoutblocksofcode.Commentsshouldexplainthe'why',notthe'what',andbeplacedabovetherelevantcodeforclari

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

WebStorm Mac版
好用的JavaScript開發工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3漢化版
中文版,非常好用

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)