JavaScript學習筆記(DOM)


我們可以通過HTML DOM ,JavaScript能夠訪問和改變HTML文檔的所有元素。
HTMLDOM(文檔對象模型)
網頁被加載時,瀏覽器會創建頁面的文檔對象模型
HTML DOM 模型被結構化爲對象樹:
對象的HTML DOM樹:
在這裏插入圖片描述
通過這個對象模型,JavaScript 獲得創建動態 HTML 的所有力量:

  • JavaScript 能改變頁面中的所有 HTML 元素
  • JavaScript 能改變頁面中的所有 HTML 屬性
  • JavaScript 能改變頁面中的所有 CSS 樣式
  • JavaScript 能刪除已有的 HTML 元素和屬性
  • JavaScript 能添加新的 HTML 元素和屬性
  • JavaScript 能對頁面中所有已有的 HTML 事件作出反應
  • JavaScript 能在頁面中創建新的 HTML 事件

什麼是 DOM?

DOM 是一項 W3C (World Wide Web Consortium) 標準。

DOM 定義了訪問文檔的標準:

“W3C 文檔對象模型(DOM)是中立於平臺和語言的接口,它允許程序和腳本動態地訪問、更新文檔的內容、結構和樣式。”
W3C DOM 標準被分爲 3 個不同的部分:

  • Core DOM - 所有文檔類型的標準模型
  • XML DOM - XML 文檔的標準模型
  • HTML DOM - HTML 文檔的標準模型

HTML DOM是關於如何獲取、更改、添加或者刪除HTML元素的標準。

<body>
    <h2>dom</h2>
    <p id="demo"></p>
    <!-- 注意:將js放在web頁面你要編輯的元素的後面,我是放在body的最後,問題解決。 -->
    <script>
        document.getElementById("demo").innerHTML = 'hello world';
    </script>
</body>

getElementById方法:

訪問HTML元素最常用的方法是使用元素的id
在上面的例子中,getElementById方法使用id="demo"來查找元素

innerHTML屬性

獲取元素內容最簡單的方法是使用有innerHTML屬性:
innerHTML屬性可用於獲取或者替換HTML元素的內容
InnerHTML屬性可用於獲取或改變任何HMTL元素,包括<html>和<body>

Document對象:

文檔對象代表您的網頁。
如果您希望訪問HTML頁面中的任何元素,那麼您問題從訪問document對象開始。

查找元素

方法 描述
document.getElementById(id) 通過元素id來查找
document.getElementsByTagName(name 通過標籤名來查找元素
document.getElementsByClassName(name) 通過類名來查找元素

改變HTML元素

方法 描述
element.innerHTML = new html contenet 改變元素的inner HTML
element.attribute = new value 改變HTML元素的屬性值
element.setAttribute(attribute.value) 改變HTML元素的屬性值
element.style.property = new style 改變HTML元素的樣式

添加和刪除元素

方法 描述
document.createElement(element) 創建HTML元素
document.removeChild(element) 刪除HTML元素
document.appendChild(element) 添加HTML元素
document.replaceChild(element) 替換HTML元素
document.write(text) 寫入HTML輸出流

添加事件處理程序

方法 描述
document.getElementById(id).onclick = function(){code} 向onclick事件添加事件處理程序

查找HTML對象

首個 HTML DOM Level 1 (1998),定義了 11 個 HTML 對象、對象集合和屬性。它們在 HTML5 中仍然有效。

後來,在 HTML DOM Level 3,加入了更多對象、集合和屬性。
在這裏插入圖片描述


使用DOM查找HTML元素:

  • 通過id查找HTML元素
  • 通過標籤名查找HTML元素
  • 通過類名查找HTML元素
  • 通過CSS選擇器查找HTML元素
  • 通過HTML對象集合查找HTML元素

通過id查找HTML元素

DOM中查找HTML元素最簡單的方法是,使用元素的id。

例如:

<h2>dom</h2>
    
    <p id="intro">Hello World!</p>
    <p>本例演示:<b>getElementById</b>方法。</p>
    <p id="demo"></p>
    <!-- 注意:將js放在web頁面你要編輯的元素的後面,我是放在body的最後,問題解決。 -->
    <script>
        document.getElementById("demo").innerHTML = 'hello world';
        var myElement = document.getElementById("intro");
        document.getElementById('demo').innerHTML = 
        "來自 intro段落的文本是:"+myElement.innerHTML;
    </script>

在這裏插入圖片描述


通過標籤名查找HTML元素

本例中查找的是p元素

<body>
    <h1>通過標籤名查找HTML元素</h1>
    
    <!-- <p id="intro">Hello World!</p> -->
    <p>Hello World!</p>

    <p>本例演示:<b>getElementsByTagName</b>方法。</p>
    <p id="demo"></p>
    <!-- 注意:將js放在web頁面你要編輯的元素的後面,我是放在body的最後,問題解決。 -->
    <script>
        // document.getElementById("demo").innerHTML = 'hello world';
        // var myElement = document.getElementById("intro");
        // document.getElementById('demo').innerHTML = 
        // "來自 intro段落的文本是:"+myElement.innerHTML;
        var x = document.getElementsByTagName("p");
        //innerHTML屬性可用於獲取或者替換HTML元素的內容
        document.getElementById("demo").innerHTML = 
        '第一段中的文本(index 0)是:'+x[0].innerHTML;
    </script>
</body>


通過標籤名查找HTML元素

<body>
    <h1>通過標籤名查找HTML元素</h1>
    <div id="main">
        <p>DOM 很有用</p>
        <p>本例演示<b>getElementsByTagName</b>方法。</p>
    </div>

    <p id="demo"></p>
    <!-- <p id="intro">Hello World!</p> -->
    <!-- <p>Hello World!</p>

    <p>本例演示:<b>getElementsByTagName</b>方法。</p>
    <p id="demo"></p> -->
    <!-- 注意:將js放在web頁面你要編輯的元素的後面,我是放在body的最後,問題解決。 -->
    <script>
        var x = document.getElementById("main");
        var y = x.getElementsByTagName("p");
        document.getElementById("demo").innerHTML = 
        '"main"中的第一段(索引0)是:'+y[0].innerHTML;
    </script>
</body>

在這裏插入圖片描述


通過類名查找HTML元素

如果您需要找到擁有相同類名的所有HTML元素,請使用getElementsByClassName()。
本例返回包含class="intro"的所有元素的列表:

	<h1>通過類名查找HTML元素</h1>

    <p>Hello World!</p>

    <p class="intro"> DOM很有用</p>

    <p class="intro">本例演示:<b>getElementsByClassName</b>方法。</p>

    <p id="demo"></p>

    <script>
        var x = document.getElementsByClassName("intro");
        document.getElementById("demo").innerHTML = 
        'class = "intro"第一段(索引0):'+x[0].innerHTML;
    </script>

在這裏插入圖片描述


通過類名查找元素不適用於 Internet Explorer 8 及其更早版本。

通過CSS選擇器查找HTML元素

如果您需要查找匹配指定CSS選擇器(id,類名、屬性、屬性值等等)的所有HTML元素,請使用querySelectorAll()方法。

<h1>按查詢選擇器查找 HTML 元素</h1>

    <p>Hello World!</p>

    <p class="intro"> DOM很有用</p>

    <p class="intro">本例演示:<b>getElementsByClassName</b>方法。</p>

    <p id="demo"></p>

    <script>
        var x = document.querySelectorAll("p.intro");
        document.getElementById("demo").innerHTML = 
        'class = "intro" 的第一段(索引0):'+x[0].innerHTML;
    </script>

在這裏插入圖片描述


querySelectorAll() 不適用於 Internet Explorer 8 及其更早版本。

通過HTML對象選擇器查找HTML對象

本例中查找id="frm1"的form元素,在forms集合中,然後顯示所有元素值:
例如:

<body>
    <h1>使用document.forms 查找HTML元素</h1>

    <form id="frm1" action="/demo/action_page.php">
        First name:<input type="text" name="fname" value="hkk">
        <br/>
        Last name :<input type="text" name="lname" value="Gates">
        <br><br>

        <input type="submit" value="提交">
    </form>
    <p>單擊“試一試”按鈕,顯示錶單中每個元素的值。</p>
    <button onclick="myFunction()">試一試</button>

    <p id="demo"></p>
    <script>
        function myFunction() {  
            var x = document.forms["frm1"];
            var text = "";
            var i;
            for (i = 0; i < x.length; i++) {
                text += x.elements[i].value+"<br>";
            }
            document.getElementById("demo").innerHTML = text;
        }
    </script>
</body>

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章