文檔對(duì)象模型DOM通俗講解
在開始之前先說(shuō)一點(diǎn),DOM是非常容易理解的,但是大家說(shuō)的太官方,讓人很是難于理解,我們就用非常簡(jiǎn)單的語(yǔ)言翻譯一遍。加深對(duì)DOM的理解,從而對(duì)它有一個(gè)全面的認(rèn)識(shí)。
什么是DOM
DOM的全稱是Document Object Model,即文檔對(duì)象模型,它允許腳本控制Web頁(yè)面、窗口和文檔。
如果沒有DOM,JavaScript將是另外一種腳本語(yǔ)言;而有了DOM,它將成為制作動(dòng)態(tài)頁(yè)面的強(qiáng)有力工具。DOM不是JavaScript語(yǔ)言的一部分,而是內(nèi)置在瀏覽器中的一個(gè)應(yīng)用程序接口。當(dāng)然,我們可以簡(jiǎn)單的理解為一種用于HTML和XML文檔的編程接口。它給文檔提供了一種結(jié)構(gòu)化的表示方法,可以改變文檔的內(nèi)容和呈現(xiàn)方式。
DOM(文檔對(duì)象模型)是一組用來(lái)描述腳本怎樣與結(jié)構(gòu)化文檔進(jìn)行交互和訪問(wèn)的web標(biāo)準(zhǔn)。他的功能是把瀏覽器支持的文檔(包括HTML XML XHTML)當(dāng)作一個(gè)對(duì)象來(lái)解析。DOM實(shí)際上是一個(gè)操作文檔里面所包含的內(nèi)容的一個(gè)編程的API,允許開發(fā)人員從文檔中讀取、搜索、修改、增加和刪除數(shù)據(jù)。DOM是與平臺(tái)和語(yǔ)言無(wú)關(guān)的,也就是說(shuō)只要是支持DOM的平臺(tái)和編程語(yǔ)言,你都可以用來(lái)編寫文檔。
DOM定義了一系列對(duì)象、方法和屬性,用于訪問(wèn)、操作和創(chuàng)建文檔中的內(nèi)容、結(jié)構(gòu)、樣式以及行為。每一個(gè)網(wǎng)頁(yè)元素(一個(gè)HTML標(biāo)簽)都對(duì)應(yīng)著一個(gè)對(duì)象(object,所謂“對(duì)象”,用白話說(shuō)就是“東西”。)。網(wǎng)頁(yè)上的標(biāo)簽是一層層嵌套的,最外面的一層是<HTML>,文檔對(duì)象模型也這樣一層層嵌套著,但是通常被理解成一棵樹的形狀。樹根是window或document對(duì)象,相當(dāng)于最外層的標(biāo)簽的外圍,也就是整個(gè)文檔。樹根之下(這棵樹的圖通常是倒著畫,就好像遺傳譜系或者家譜那樣。樹根就是唯一的共同祖先)是子一級(jí)的對(duì)象,子對(duì)象也有它自己的子對(duì)象,除了根對(duì)象以外,所有的對(duì)象都有自己的父對(duì)象,同一對(duì)象的子對(duì)象之間就是兄弟的關(guān)系。如果大家沒有見過(guò)家譜,應(yīng)該知道一個(gè)公司的組織架構(gòu)。
DOM實(shí)際上是以面向?qū)ο蠓绞矫枋龅奈臋n模型。DOM定義了表示和修改文檔所需的對(duì)象、這些對(duì)象的行為和屬性以及這些對(duì)象之間的關(guān)系??梢园袲OM認(rèn)為是頁(yè)面上數(shù)據(jù)和結(jié)構(gòu)的一個(gè)樹形表示,不過(guò)頁(yè)面當(dāng)然可能并不是以這種樹的方式具體實(shí)現(xiàn)。通過(guò)JavaScript,可以重構(gòu)整個(gè) HTML 文檔。可以添加、移除、改變或重排頁(yè)面上的項(xiàng)目。
要改變頁(yè)面的某個(gè)東西,JavaScript 就需要獲得對(duì) HTML 文檔中所有元素進(jìn)行訪問(wèn)的入口。這個(gè)入口連同對(duì) HTML 元素進(jìn)行添加、移動(dòng)、改變或移除的方法和屬性,都是通過(guò)文檔對(duì)象模型來(lái)獲得的(DOM)。
DOM和JavaScript
我們用JavaScript對(duì)網(wǎng)頁(yè)進(jìn)行的所有操作都是通過(guò)DOM進(jìn)行的。如何訪問(wèn)DOM中的對(duì)象?
先是父對(duì)象名,后面接著是子對(duì)象名,使用圓點(diǎn)隔開。
<span style="font-size:18px">window.document.write("hi!how are you!")</span>
DOM操作Checkbox實(shí)例
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>DOM操作checkbox</title>
<script type="text/javascript">
//當(dāng)html頁(yè)面加載完后;執(zhí)行以下函數(shù)
window.onload = function() {
document.getElementById("btn").onclick = function() {
var inputs = document.getElementsByTagName("input");
for ( var i = 0; i < inputs.length; i++) {
if (inputs[i].type = "checkbox") {
if (inputs[i].value % 2 != 0) {
inputs[i].checked = true;
}
}
}
}
}
</script>
</head>
<body>
<input type="checkbox" value="1" />
<input type="checkbox" value="2" />
<input type="checkbox" value="3" />
<input type="checkbox" value="4" />
<input type="checkbox" value="5" />
<input type="checkbox" value="6" />
<input type="checkbox" value="7" />
<input type="checkbox" value="8" />
<input type="checkbox" value="9" />
<input type="checkbox" value="10" />
<button id="btn">選中奇數(shù)</button>
</body>
</html>
單機(jī)按鈕顯示效果:

相關(guān)文章
關(guān)于JavaScript的Array數(shù)組方法詳解
這篇文章主要介紹了關(guān)于JavaScript的Array數(shù)組方法詳解,數(shù)組是一個(gè)固定長(zhǎng)度的存儲(chǔ)相同數(shù)據(jù)類型的數(shù)據(jù)結(jié)構(gòu),數(shù)組中的元素被存儲(chǔ)在一段連續(xù)的內(nèi)存空間中,它是最簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu)之一,需要的朋友可以參考下2023-05-05

分析Node.js connect ECONNREFUSED錯(cuò)誤

JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之鏈表

JavaScript中的Repaint和Reflow用法詳解