粥里有勺糖

vuePress-theme-reco 粥里有勺糖    2018 - 2023
粥里有勺糖 粥里有勺糖

Choose mode

  • dark
  • auto
  • light
关于我
备战春秋
  • 心得总结
  • 校招考点汇总
  • 面经汇总
  • 复习自查
技术笔记
  • 技术教程
  • 模板工程
  • 源码学习
  • 技术概念
  • 个人作品
  • 学习笔记
计算机基础
  • 算法与数据结构
  • 操作系统
  • 计算机网络
  • 设计模式
  • 剑指offer
大前端
  • javascript
  • vue
  • html
  • css
  • 🌏浏览器专题
  • Web性能优化
  • regexp
  • node
面试
  • 问解
  • javascript
  • css
  • 手撕代码
  • 性能优化
  • 综合问题
  • 面经汇总
  • 小程序
手撕代码
  • 数据结构与算法
  • javascript
  • css
个人站点
  • GitHub (opens new window)
  • 博客园 (opens new window)
  • 掘金 (opens new window)
线上作品
  • 轻取(文件收集) (opens new window)
  • 个人图床 (opens new window)
  • 考勤小程序 (opens new window)
  • 时光恋人 (opens new window)
  • 在线简历生成 (opens new window)
留言板
Github (opens new window)
author-avatar

粥里有勺糖

285

文章

40

标签

关于我
备战春秋
  • 心得总结
  • 校招考点汇总
  • 面经汇总
  • 复习自查
技术笔记
  • 技术教程
  • 模板工程
  • 源码学习
  • 技术概念
  • 个人作品
  • 学习笔记
计算机基础
  • 算法与数据结构
  • 操作系统
  • 计算机网络
  • 设计模式
  • 剑指offer
大前端
  • javascript
  • vue
  • html
  • css
  • 🌏浏览器专题
  • Web性能优化
  • regexp
  • node
面试
  • 问解
  • javascript
  • css
  • 手撕代码
  • 性能优化
  • 综合问题
  • 面经汇总
  • 小程序
手撕代码
  • 数据结构与算法
  • javascript
  • css
个人站点
  • GitHub (opens new window)
  • 博客园 (opens new window)
  • 掘金 (opens new window)
线上作品
  • 轻取(文件收集) (opens new window)
  • 个人图床 (opens new window)
  • 考勤小程序 (opens new window)
  • 时光恋人 (opens new window)
  • 在线简历生成 (opens new window)
留言板
Github (opens new window)
  • Javascript

    • 简介
    • 获取某年某月的天数
    • 日期格式化
    • 展开多级数组
    • 判断数据类型的方案
    • 文件上传与下载
    • 柯里化
    • 闭包
    • delete
    • 垃圾回收
    • 节流与防抖
    • apply,call,bind
    • blob与file
    • Event Loop
    • Promise
    • 定时器
    • 原型与原型链
    • 作用域
    • 执行上下文栈
    • 变量对象
    • 作用域链
    • ECMAScript规范解读this
    • 执行上下文
    • 参数按值传递
    • 类数组与arguments
    • 浮点数
    • Symbol的用法
    • 箭头函数
    • 类型转换
    • 获取dom元素的方式
    • 浅拷贝与深拷贝
    • ES6+的新语法糖和方法整理
    • 学习过程中学到的一些取巧之法

获取dom元素的几种方式

vuePress-theme-reco 粥里有勺糖    2018 - 2023

获取dom元素的几种方式

粥里有勺糖 2020-09-06 大前端javascript

# 获取dom元素的几种方式

  • 按使用频率排序
  • 低版本浏览器 === < IE8

# 1.document.getElementById

# 简介

通过元素的id获取

  • 存在 -- 则返回这个元素
  • 不存在 -- 返回null

# 特点

  • 如果文档中存在多个相同的id,则获取第一个
  • 在一些低版本浏览器会把元素的name当做id获取
  • 上下文只能是document

# 2.document.getElementsByClassName

# 简介

通过元素的类名获取

  • 存在 -- 返回由目标元素组成的HTMLCollectio
  • 不存在 -- 返回一个空的HTMLCollectio
    • HTMLCollectio是类数组

# 特点

  • 获取的结果是一个类数组
  • 上下文可以是任意元素(document或其它dom元素)
  • 在一些低版本浏览器不支持

# 3.document.querySelector

# 简介

通过选择器获取一个元素

# 特点

  • 上下文可以是任意元素(document或其它dom元素)
  • 低版本浏览器不兼容
  • 返回值是类数组

# 4.document.querySelectorAll

# 简介

通过选择器获取一组元素

# 特点

  • 同querySelector

# 5.document.getElementsByTagName

# 简介

通过标签名获取

# 特点

  • 上下文可以是任意元素(document或其它dom元素)
  • 返回值是类数组
  • 参数是标签名,不区分大小写

# 6.document.getElementsByName

# 简介

通过元素的name属性获取

# 特点

  • 上下文只能是document
  • 返回值是类数组
  • 在IE浏览器中只能获取到表单元素,当然我们一般也只用它获取表单元素,从ie10开始可以不只是表单元素

# 7.document.body

获取body这个元素

# 8.document.documentElement

获取html这个元素

# 9.document.getElementsByTagNameNS

返回带有指定名称和命名空间的所有元素的 NodeList

nodeList = document.getElementsByTagNameNS(namespace, name)
1

说实话,这个API目前在我的学习/工作中还没找到落地之处😢😢

# 元素之间的继承关系

图片

每个元素都有对应的类,因此每个类都提供了一些方法来操作元素本身

通过类之间的继承关系,丰富元素的可操作性

由于getElementById与getElementsByName方法是在Document类上,于是普通元素的实例对象是没有这两方法的,所以这两方法的上下文只能是document

# 总结

  1. 上下文只能是document的方法
    • getElementById
    • getElementsByName
  2. 上下文为任意元素的方法
    • getElementsByClassName
    • getElementById
    • querySelectorAll
    • getElementsByTagName
    • getElementsByTagNameNS
  3. 查询效率最高的是
    • getElementById:由于id在正常情况下是独一无二的,所以查询是很高效的
  4. 返回值
    • 只有getElementById与getElementById返回对象本身
    • 其余查询方法均返回一个类数组HTMLCollectio

参考

简书-JS获取HTML DOM元素的8种方法 (opens new window)

MDN-Document.getElementsByTagNameNS (opens new window)

CSDN-HTML元素之间的继承关系 (opens new window)

Edit this page (opens new window)
Last Updated: 2022/5/15 12:46:34