最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript 中的文檔對(duì)象模型 DOM

 更新時(shí)間:2021年10月08日 16:56:07   作者:devpoint  
DOM,即文檔對(duì)象模型,前端開(kāi)發(fā)工程師必學(xué)的基礎(chǔ)知識(shí),在本文將介紹如何在 HTML 文檔中選擇元素、如何創(chuàng)建元素、如何更改內(nèi)聯(lián) CSS 樣式以及如何監(jiān)聽(tīng)事件,需要的朋友可以參考一下

1、什么是DOM

DOM 文檔對(duì)象模型,是 HTML 和 XML 文檔的編程接口,用一個(gè)邏輯樹(shù)來(lái)表示一個(gè)文檔,樹(shù)的每個(gè)分支的終點(diǎn)都是一個(gè)節(jié)點(diǎn)(node),每個(gè)節(jié)點(diǎn)都包含著對(duì)象(objects),允許從文檔中創(chuàng)建、更改或刪除元素,還可以向這些元素添加事件,使頁(yè)面更加動(dòng)態(tài)。

DOM 將 HTML 文檔視為節(jié)點(diǎn)樹(shù),一個(gè)節(jié)點(diǎn)代表一個(gè) HTML 元素。如下 HTML 代碼,以更好地理解 DOM 樹(shù)結(jié)構(gòu)。

<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>DOM樹(shù)結(jié)構(gòu)</title>
    </head>
    <body>
        <h1>DOM對(duì)象模型</h1>
        <h2>DOM樹(shù)結(jié)構(gòu)</h2>
    </body>
</html>

文檔稱為根節(jié)點(diǎn),包含一個(gè)子節(jié)點(diǎn),即 <html> 元素。 <html> 元素包含兩個(gè)子元素,分別是<head>和<body>元素。

<head><body> 都有自己的子元素,如下圖:

可以通過(guò) JavaScript 訪問(wèn)文檔中的這些元素并對(duì)其進(jìn)行更改。下面將介紹如何使用 JavaScript 處理 DOM。

2、選擇元素

如何選擇文檔中的元素呢?在 HTML 文檔中選擇元素有幾個(gè)不同的方法,下面介紹其中三種方法:

  • getElementById():返回一個(gè)匹配特定 ID的元素。
  • querySelector():返回文檔中與指定選擇器或選擇器組匹配的第一個(gè) HTMLElement對(duì)象。
  • querySelectorAll():返回與指定的選擇器組匹配的文檔中的元素列表 (使用深度優(yōu)先的先序遍歷文檔的節(jié)點(diǎn))。

3、getElementById()

在 HTML 中,id 是 HTML 元素的唯一標(biāo)識(shí)符,意味著不能為兩個(gè)不同的元素使用設(shè)置相同的 id ,必須要確保 id 在整個(gè)文檔中的唯一性。

JavaScript 中,可以通過(guò)使用 id 名稱來(lái)獲取 HTML 標(biāo)簽。

<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>DOM樹(shù)結(jié)構(gòu)</title>
    </head>
    <body>
        <h1>DOM對(duì)象模型</h1>
        <h2>DOM樹(shù)結(jié)構(gòu)</h2>
        <p id="intro">DOM 即文檔對(duì)象模型,它是一個(gè)編程接口。</p>

        <script type="text/javascript">
            const elemIntro = document.getElementById("intro");
            console.log(elemIntro);
        </script>
    </body>
</html>

打開(kāi)開(kāi)發(fā)者工具:

如果需要獲取對(duì)象中的文本內(nèi)容,可以使用 textContent 或者 innerText

<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>DOM樹(shù)結(jié)構(gòu)</title>
    </head>
    <body>
        <h1>DOM對(duì)象模型</h1>
        <h2>DOM樹(shù)結(jié)構(gòu)</h2>
        <p id="intro">DOM 即文檔對(duì)象模型,它是一個(gè)編程接口。</p>

        <script type="text/javascript">
            const elemIntro = document.getElementById("intro");
            console.log(elemIntro);
            // 獲取元素內(nèi)的文本內(nèi)容
            const elemText = elemIntro.textContent; // elemIntro.innerText 
            console.log(elemText);
        </script>
    </body>
</html>

打開(kāi)控制器查看:

4、querySelector()

使用此方法查找具有一個(gè)或多個(gè) CSS 選擇器的元素,下面以國(guó)慶電影檔期信息為示例,通過(guò) querySelector() 獲取相應(yīng)的標(biāo)題和列表元素。

<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>DOM樹(shù)結(jié)構(gòu)</title>
    </head>
    <body>
        <h1>2021國(guó)慶電影檔期</h1>
        <ul class="movies">
            <li>《長(zhǎng)津湖》</li>
            <li>《我和我的父輩》</li>
            <li>《鐵道英雄》</li>
        </ul>

        <script type="text/javascript">
            const elemTitle = document.querySelector("h1");
            const elemList = document.querySelector(".movies");
            console.log("h1");
            console.log(elemTitle);
            console.log("ul movies");
            console.log(elemList);
        </script>
    </body>
</html>

在瀏覽器打開(kāi)文檔,并開(kāi)啟開(kāi)發(fā)者工具,可以看到如下效果:

5、querySelectorAll()

此方法查找與 CSS 選擇器匹配的所有元素并返回節(jié)點(diǎn)的列表,下面就查找電影檔期的每一個(gè) li 元素:

<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>DOM樹(shù)結(jié)構(gòu)</title>
    </head>
    <body>
        <h1>2021國(guó)慶電影檔期</h1>
        <ul class="movies">
            <li>《長(zhǎng)津湖》</li>
            <li>《我和我的父輩》</li>
            <li>《鐵道英雄》</li>
        </ul>

        <script type="text/javascript">
            const elemTitle = document.querySelector("h1");
            const movieItems = document.querySelectorAll(".movies > li");
            console.log(movieItems);
        </script>
    </body>
</html>

控制臺(tái)打印的效果如下:

對(duì)于上述節(jié)點(diǎn)列表可以按照下面的方式進(jìn)行遍歷:

<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>DOM樹(shù)結(jié)構(gòu)</title>
    </head>
    <body>
        <h1>2021國(guó)慶電影檔期</h1>
        <ul class="movies">
            <li>《長(zhǎng)津湖》</li>
            <li>《我和我的父輩》</li>
            <li>《鐵道英雄》</li>
        </ul>

        <script type="text/javascript">
            const elemTitle = document.querySelector("h1");
            const movieItems = document.querySelectorAll(".movies > li");
            movieItems.forEach((item) => {
                console.log(item);
            });
        </script>
    </body>
</html>

控制臺(tái)打印的效果如下:

6、添加新元素

如何向文檔添加新元素呢?可以使用 document.createElement() 向 DOM 樹(shù)添加新元素,通過(guò) textContent 為其新元素添加內(nèi)容,如下的示例,在電影檔期列表中添加新的檔期:

<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>DOM樹(shù)結(jié)構(gòu)</title>
    </head>
    <body>
        <h1>2021國(guó)慶電影檔期</h1>
        <ul class="movies" id="movies">
            <li>《長(zhǎng)津湖》</li>
            <li>《我和我的父輩》</li>
            <li>《鐵道英雄》</li>
        </ul>

        <script type="text/javascript">
            const movieItems = document.getElementById("movies");
            const newMovie = document.createElement("li");
            newMovie.textContent = "《老鷹抓小雞》";
            movieItems.appendChild(newMovie);
        </script>
    </body>
</html>

運(yùn)行后,頁(yè)面效果如下:

7、更改CSS樣式

如何更改內(nèi)聯(lián) CSS 樣式呢?通過(guò)使用 style 屬性來(lái)能夠更改 HTML 文檔中的 CSS 樣式,還是以國(guó)慶電影檔期為示例,更改頁(yè)面標(biāo)題 h1 元素的字體大小和字體顏色:

<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>DOM樹(shù)結(jié)構(gòu)</title>
    </head>
    <body>
        <h1>2021國(guó)慶電影檔期</h1>
        <ul class="movies">
            <li>《長(zhǎng)津湖》</li>
            <li>《我和我的父輩》</li>
            <li>《鐵道英雄》</li>
        </ul>

        <script type="text/javascript">
            const pageTitle = document.querySelector("h1");
            pageTitle.style.fontSize = "24px";
            pageTitle.style.color = "#0000FF";
        </script>
    </body>
</html>

運(yùn)行后,頁(yè)面效果如下:

關(guān)于CSS樣式的屬性,在JavaScript中采用駝峰方式,如 font-size JavaScript中對(duì)應(yīng)的屬性為 fontSize ,background-color 就是 backgroundColor。

8、如何監(jiān)聽(tīng)事件

如何使用監(jiān)聽(tīng)頁(yè)面上元素的事件?使用方法 addEventListener()  ,下面示例通過(guò)點(diǎn)擊按鈕,在列表中增加新的電影排期,如下:

<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta http-equiv="X-UA-Compatible" content="ie=edge" />
        <title>DOM樹(shù)結(jié)構(gòu)</title>
    </head>
    <body>
        <h1>2021國(guó)慶電影檔期</h1>
        <ul id="movies">
            <li>《長(zhǎng)津湖》</li>
            <li>《我和我的父輩》</li>
            <li>《鐵道英雄》</li>
        </ul>
        <button id="addNew">增加電影《老鷹抓小雞》</button>
        <script type="text/javascript">
            const moviesList = document.getElementById("movies");
            const button = document.getElementById("addNew");
            const addNewMovie = (movieTitle, elemTarget) => {
                const newMovie = document.createElement("li");
                newMovie.textContent = movieTitle;
                newMovie.style.color = "#ff0000";
                elemTarget.appendChild(newMovie);
            };
            button.addEventListener("click", () => {
                addNewMovie("《老鷹抓小雞》", moviesList);
            });
        </script>
    </body>
</html>

運(yùn)行后,頁(yè)面效果如下:

在實(shí)際項(xiàng)目中,事件監(jiān)聽(tīng)處理比這要負(fù)責(zé),對(duì)于現(xiàn)代 WEB 開(kāi)發(fā),豐富的前端框架,對(duì)于事件的處理都已經(jīng)封裝的很好了,甚至讓開(kāi)發(fā)人員就忘記了事件監(jiān)聽(tīng)的相關(guān)知識(shí),如事件冒泡、事件捕獲、事件委托等,本文就不展開(kāi)了。

結(jié)論:

DOM 文檔對(duì)象模型,是 HTML 和 XML 文檔的編程接口。當(dāng)瀏覽器首次讀?。ń馕觯┑?HTML 文檔時(shí),它會(huì)創(chuàng)建一個(gè)大的對(duì)象,一個(gè)以 HTML 文檔為基礎(chǔ)的非常大的對(duì)象,這個(gè)就是 DOM。它是從 HTML 建模的樹(shù)狀結(jié)構(gòu)。DOM 用于交互和修改 DOM 結(jié)構(gòu) 或者特定的元素或節(jié)點(diǎn)。

到此這篇關(guān)于JavaScript 中的文檔對(duì)象模型 DOM的文章就介紹到這了,更多相關(guān)JavaScript 文檔對(duì)象模型 DOM內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 微信小程序 閉包寫法詳細(xì)介紹

    微信小程序 閉包寫法詳細(xì)介紹

    這篇文章主要介紹了微信小程序 閉包寫法詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • TypeScript枚舉類型

    TypeScript枚舉類型

    這篇文章主要介紹了TypeScript枚舉類型,所謂的枚舉類型就是為一組數(shù)值賦予名字,下面我們來(lái)看看文章是怎么介紹的吧,需要的小伙伴也可以參考一下,希望對(duì)你有所幫助
    2021-12-12
  • 13個(gè)JavaScript 一行程序,讓你看起來(lái)就是個(gè)專家

    13個(gè)JavaScript 一行程序,讓你看起來(lái)就是個(gè)專家

    JavaScript 可以做很多好玩的事, 從復(fù)雜的框架到處理API,有太多的東西需要學(xué)習(xí)。但是,它也能讓我們只用一行就能做一些了不起的事情。今天的文章小編就為大家介紹13 個(gè)JavaScript 行程序,需要的朋友可以參考下
    2021-08-08
  • 詳解節(jié)點(diǎn)監(jiān)控相對(duì)準(zhǔn)確的計(jì)算FMP

    詳解節(jié)點(diǎn)監(jiān)控相對(duì)準(zhǔn)確的計(jì)算FMP

    這篇文章主要為大家介紹了節(jié)點(diǎn)監(jiān)控相對(duì)準(zhǔn)確的計(jì)算FMP詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • 微信小程序 兩種為對(duì)象屬性賦值的方式詳解

    微信小程序 兩種為對(duì)象屬性賦值的方式詳解

    這篇文章主要介紹了微信小程序 兩種為對(duì)象屬性賦值的方式詳解的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • tagName的使用,留一筆

    tagName的使用,留一筆

    tagName的使用,留一筆...
    2006-06-06
  • 使用PreloadJS加載圖片資源的基礎(chǔ)方法詳解

    使用PreloadJS加載圖片資源的基礎(chǔ)方法詳解

    PreloadJS是一個(gè)用來(lái)管理和協(xié)調(diào)相關(guān)資源加載的類庫(kù),它可以方便的幫助你預(yù)先加載相關(guān)資源簡(jiǎn)單點(diǎn)兒說(shuō)就是一個(gè)加載插件,它可以做成頁(yè)面異步加載且頂部會(huì)有進(jìn)度條動(dòng)畫
    2020-02-02
  • 詳解微信第三方小程序開(kāi)發(fā)

    詳解微信第三方小程序開(kāi)發(fā)

    這篇文章主要介紹了詳解微信第三方小程序開(kāi)發(fā)的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • js實(shí)現(xiàn)兔年轉(zhuǎn)圈圈動(dòng)畫示例

    js實(shí)現(xiàn)兔年轉(zhuǎn)圈圈動(dòng)畫示例

    這篇文章主要為大家介紹了js實(shí)現(xiàn)兔年轉(zhuǎn)圈圈動(dòng)畫示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • JS前端常見(jiàn)的競(jìng)態(tài)問(wèn)題解決方法詳解

    JS前端常見(jiàn)的競(jìng)態(tài)問(wèn)題解決方法詳解

    這篇文章主要為大家介紹了JS前端常見(jiàn)的競(jìng)態(tài)問(wèn)題解決方法詳解,閱讀完本文,你將會(huì)知道:什么是競(jìng)態(tài)問(wèn)題;通常出現(xiàn)在哪些場(chǎng)景;解決競(jìng)態(tài)問(wèn)題有哪些方法,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪的相關(guān)資料
    2022-08-08

最新評(píng)論

韩城市| 上高县| 达日县| 宁陵县| 沙河市| 湟中县| 漳州市| 顺平县| 枣阳市| 北宁市| 镇康县| 兰溪市| 儋州市| 镇安县| 宣城市| 平安县| 洮南市| 隆安县| 天祝| 南召县| 班玛县| 苏尼特左旗| 托里县| 青阳县| 津市市| 陆良县| 万全县| 黑河市| 安化县| 涟源市| 从化市| 襄城县| 济阳县| 武穴市| 汤阴县| 东阿县| 东宁县| 邵武市| 和顺县| 奎屯市| 中西区|