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>

在这里插入图片描述

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