第3章 DOM基本概念以及基本属性和方法

Posted 二森

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第3章 DOM基本概念以及基本属性和方法相关的知识,希望对你有一定的参考价值。

DOM的概念

一些概念

  • DOM:全称是 Document Object Model,即文档对象模型。当创建好一个页面并加载到浏览器时,DOM会把网页文档转换为一个文档对象,文档对象的主要功能是处理网页内容。

  • 节点树:DOM根据html的标签结构,将HTML文档解析成一棵节点树,每个树枝和叶子都是一个节点,每个节点是一个对象。文档是由节点构成的集合。

  • 节点

    • 元素节点:HTML中的标签元素就是DOM的元素节点,这些元素在文档中的布局形成了文档的结构。元素可以包含其它元素,标签的名称就是元素的名字。

    • 文本节点:如果一个元素包含着文本,那么这个文本就是文本节点。文本节点总是被包含在元素节点的内部,但并非所有元素节点都包含有文本节点。文本节点形成页面文档的主要内容。

    • 属性节点:属性节点是用来对元素做出更具体地描述,比如title、class、id等等。并非所有的元素都包含属性,但所有的属性都被元素包含。

举例说明:

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <title>商品清单</title>
</head>

<body>
    <h1 title="此处为特价商品">特价商品</h1>
    <ul id="special">
        <li class="fruit apple">苹果</li>
        <li class="fruit banana">香蕉</li>
    </ul>
    <p>热销商品</p>
    <ul id=\'normal\'>
        <li>桃子</li>
        <li>草莓</li>
        <li>西瓜</li>
    </ul>
</body>

</html>
  • 该html文档的dom树模型为:

image

  • h1元素的文本节点和属性节点为:

image

DOM的一些属性和方法

获取元素的方法

1. getElementById —— 根据元素id获取元素节点

  • 使用方式:document.getElementById(id)
  • 注意大小写!!!
  • 返回一个元素节点,该元素节点的数据类型是对象。注意,因为在整个html文档中,id是唯一的,所以该方法只返回一个节点。

举例说明:
console.log(document.getElementById(\'special\'))

image

2. getElementsByTagName —— 根据标签名称获取元素节点数组

  • 使用方式:element.getElementByTagName(tag)
  • element的意思是,即可以document为限定范围查找,也可以任何一个元素为限定范围进行查找。
  • 返回一个对象数组。因为在html文档中,这个标签不止一个,因此返回的是一个数组。
  • 可以把一个通配符作为它的参数:"*",此时返回文档中所有元素。
  • 可以使用length计算返回的元素节点的个数。
  • 可以把 getElementById 和 getElementByTagName 结合起来使用,查找某个元素下的某个标签节点。

举例说明:

  1. 全文档使用:
console.log(document.getElementsByTagName(\'li\'));
console.log(\'长度\', document.getElementsByTagName(\'li\').length)

image

  1. 某个元素下的标签节点
let element = document.getElementById(\'special\');
console.log(element.getElementsByTagName(\'li\'))

image

  1. 通配符使用
let item = document.getElementsByTagName(\'*\');
console.log(item)

image

3. getElementsByClassName —— 根据类名获取元素节点数组

  • 使用方式:getElementsByClassName(class)
  • 返回具有相同类名的元素的数组
  • 可以指定多个类名。在字符串参数中用空格分隔类名,返回有这两个类名的元素。(类名标签顺序不重要,只要有这两个类名就会返回)
  • 可以把 getElementById 和 getElementByClassName 结合起来使用,查找某个元素下的具有相同类名的节点。
    举例说明:
  1. 全文档使用:
let item = document.getElementsByClassName(\'fruit\');
console.log(item);

image

  1. 某个元素下的标签节点
let element = document.getElementById(\'special\');
console.log(element.getElementsByClassName(\'apple\'))

image

  1. 多个类名(类名顺序反过来也可以)
console.log(document.getElementsByClassName(\'apple fruit\'))

image

获取和设置属性

获取和设置属性分别是两个方法:getAttribute、setAttribute,这两个方法不属于document对象,因此不能通过document对象调用,而是通过元素节点对象调用。

1. getAttribute —— 获取节点的属性值

  • 使用方式: object.getAttributu(attribute)

举例说明

输出h1标签的title属性(注意,我把上述html代码中的p改成了h1,为了测试当某个标签没有属性的时候,会输出什么):

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <title>商品清单</title>
</head>

<body>
    <h1 title="此处为特价商品">特价商品</h1>
    <ul id="special">
        <li class="fruit apple">苹果</li>
        <li class="fruit banana">香蕉</li>
    </ul>
    <!-- <p>热销商品</p> -->
    <h1>热销商品</h1>
    <ul id=\'normal\'>
        <li>桃子</li>
        <li>草莓</li>
        <li>西瓜</li>
    </ul>
    <script>
        let headers = document.getElementsByTagName(\'h1\');
        for (let item of headers) {
            console.log(item.getAttribute(\'title\'));
        }
    </script>
</body>

</html>

image

2. setAttribute —— 对属性节点的值作出修改

  • 使用方式:object.setAttribute(attribute, value)
  • 如果某个节点有这个属性,那么使用 setAttribute 后,新属性会覆盖住原来的属性;如果某个节点没有这个属性,那么 setAttribute 先创建这个属性,然后设置它的值。

举例说明

获取文档里所有h1元素,无论h1有没有title,都将其title设置为"new title",最后,输出检验结果:

let headers = document.getElementsByTagName(\'h1\');
for (let item of headers) {
	item.setAttribute(\'title\', \'new title\');
	console.log(item.getAttribute(\'title\'));
}

image

以上是关于第3章 DOM基本概念以及基本属性和方法的主要内容,如果未能解决你的问题,请参考以下文章

spark考试

第3章 DOM

数据挖掘导论 第4章 分类:基本概念决策树与模型评估

Scala核心编程_第09章 面向对象编程(高级特性)

Scala核心编程_第09章 面向对象编程(高级特性)

第19章 通讯的基本概念