DOM文档对象模型

15 阅读3分钟

一,API

作用:用JS去操作html元素和浏览器

分类:DOM(文档对象模型)、BOM(浏览器对象模型)

二,DOM

概念:操作网页内容的,就是操作文档标签的

作用:开发网页内容特效和实现用户交互

1,DOM树

  • 将HTML文档以树状结构直观的表现出来,我们称之为文档树或 DOM 树
  • 描述网页内容关系的名词
  • 作用:文档树直观的体现了标签与标签之间的关系

image.png

2,DOM对象

概念:浏览器根据html标签生成JS对象,即在html中叫标签,去到js后就成了对象。

注:所有的标签属性都可以在这个对象上找到,只要修改了这个对象的属性,就会自动映射到标签上

获取和打印对象的例子:

image.png

image.png

对象由属性和方法组成,DOM中最大的对象为document

image.png

image.png

三,DOM对象操作

1,获取DOM对象

  • 根据CSS选择器来获取DOM元素(重点)
  • 选择匹配的第一个元素语法: ```document.querySelector('css选择器')
  • 参数:包含一个或多个有效的CSS选择器字符串
  • 返回值: CSS选择器匹配的第一个元素,一个HTMLElement对象。如果没有匹配到,则返回null。

image.png

image.png

image.png

image.png

  • 选择匹配的多个元素语法:

    ```document.querySelectorAll('css选择器')
    
    
  • 参数:包含一个或多个有效的CSS选择器字符串

  • 返回值:CSS选择器匹配的NodeList 对象集合

  • 例如:document.querySelectorAll('ul li')

  • 获取一个DOM元素可以直接修改,但获取多个就不能直接修改了,只能通过遍历的方式给里面的元素修改。因为通过querySelector

  • 获取到的是一个伪数组,即使里面只有一个元素,也会是数组对象的形式。伪数组有长度和索引但没有pop()、push()等数组的方法,所以只能采用for方法遍历出来。

2,操作元素内容(标签里的文字)

① .innerText文本内容

可以添加或者修改文本内容,但只能修改文字,里面的标签不解析

image.png

image.png

image.png

image.png

image.png

② .innerHTML文本内容

  • 可以添加或者修改文本内容,而且对标签解析,多标签建议使用模版字符。

3,操作元素属性

①修改标签里的属性

语法: 对象.属性=值

image.png

②修改标签的样式

语法: 对象.style.样式属性=

image.png

注:赋值时记得加单位,如果属性有连接符-,需要用小驼峰命名法

当需要修改的属性太多时,则需要写很多行代码,所以采用类名(className)的方法来修改样式

语法: 元素.className=类名

image.png

image.png

即使当原有标签已经有类名了,但是js也可以把它进行修改

image.png

image.png

如果是想要附加类名,即原来类名的属性不变,再附加新的类名的属性,可以如下:

image.png

为了解决className容易覆盖原有的类名问题,采用了classList方式来进行追加和删除类名

语法

  • 追加类----元素.classList.add( 类名**’**)

  • 删除类----元素.classList.remove( 类名**’**)

  • 切换类(有就删,没有就加)----元素.classList.toggle( 类名)

  • 交换类-------- 元素.classList.replace(oldToken, newToken)

查看是否存在某个类:元素.classList.contains() 存在返回true,不存在返回false

③修改表单元素属性

修改表单里输入框提前输入的文本

image.png

image.png

image.png

修改复选框的选中与取消

image.png

设置按钮能不能按

image.png

image.png

image.png

④自定义属性的修改

访问自定义属性的值时,在DOM对象上是一律以dataset对象方法来获取

image.png

四,定时器-间歇函数

获取定时器id数字:

image.png

image.png

image.png