系统学习DOM(二)

123 阅读2分钟

这是我参与更文挑战的第5天,活动详情查看:更文挑战

上文 系统学习DOM(一) 主要学些了 DOM 树节点的基本类型和常用方法,今天继续学习 DOM API。

一、选择符 API

即使用 CSS 选择器来选取 DOM 元素,有如下两个:

  • querySelector:返回匹配 CSS 选择器的第一个 DOM 元素
  • querySelectorAll:返回匹配 CSS 选择器的全部 DOM 元素

注意:这两个方法除了在 document 上调用,还可以在 element 上调用,表示 在该元素的后代元素范围内匹配选择器,例如:

const element = document.getElementById('xxx')
const item = element.querySelector('.item')

二、元素遍历方法

Element Traversal 规范 在 DOM 元素上定义了一组属性,用来做元素遍历:

  • childElementCount:返回子元素个数(不包括文本节点和注释)
  • firstElementChild:第一个子元素,即 firstChild
  • lastElementChild:最后一个子元素,即 lastChild
  • previousElementsibling:前一个兄弟元素,即 previousSibling
  • nextElementSibling:后一个兄弟元素,即 nextSibling

三、HTML5 扩充

在 HTML5 中定义了大量 JavaScript API,其中与 DOM 相关的主要有:

1. 类操作

  • getElementByClassName:根据 class 来选取元素
  • classList:用于操作元素类名,主要方法如下:
    • add:添加类名
    • contains:判断类名是否存在
    • remove:删除类名
    • toggle:如果类名存在则删除它,如果不存在则添加它

2. 焦点管理

  • document.activeElement:返回当前获得焦点的元素
  • document.hasFocus:文档是否获得了焦点
  • focus:元素获得焦点

3. HTMLDocument变化

  • document.readyState:文档是否加载完,返回 'loading' 或 'complete'

4. 字符集属性

  • document.charset:返回文档实际使用的字符集(例如:'UTF-8')
  • document.defaultCharset:返回文档默认字符集(根据默认浏览器和操作系统的设置)

5. 自定义属性

形如 'data-xxx' 的属性,其中 xxx 可以任意命名。

  • dataset:获取或设置自定义属性值(例如 <input data-xxx="aaa">,则 input.dataset.xxx === 'aaa')

6. 插入标记

  • innerHTML:获取或设置元素子树
  • outerHTML:和 innerHTML 类似,但是会包含该元素
  • innerText:读时获取字数 Text 值,写时将子树替换成 Text 节点(会自动转义)
  • outerText:和 innerText 类型,但是会包含该元素

7. 滚动

  • scrollIntoView:元素上调用,将该元素滚动到视口中
  • scrollIntoViewIfNeeded:只有该元素不可见时才滚动,可见时什么也不做

本文继续介绍了 DOM 操作常用 API,前端开发中免不了和 DOM 打交道,熟练掌握这些有助于我们灵活使用,快速开发业务需求。