零基础快速入门前端DOM 元素获取方法详解:从代码到实践(可用于备赛蓝桥杯Web应用开发)

在前端开发中,获取 DOM 元素是操作页面内容的基础。下面这段代码展示了多种常用的 DOM 元素获取方式,我们将逐一解析其用法、特点,并汇总成方便查阅的表格。

代码示例与方法解析

先看完整代码(已简化核心部分):

复制代码
<!DOCTYPE html>
<html>
<body>
    <div class="div1">111</div>
    <div class="div1">222</div>
    <div class="div1">333</div>
    <div class="div1">444</div>
    <div class="div2"></div>
    <div class="div3"></div>
    <span class="span1"></span>
    <div id="div5">我是设置了id选择器的div5</div>

    <script>
        // 1. querySelector:通过CSS选择器获取第一个匹配元素
        var div2 = document.querySelector(".div2");
        console.log(div2); // 输出:<div class="div2"></div>

        // 2. getElementById:通过id获取元素(唯一)
        var div5 = document.getElementById("div5");
        console.log(div5); // 输出:<div id="div5">我是设置了id选择器的div5</div>

        // 3. getElementsByClassName:通过类名获取元素集合
        var div1 = document.getElementsByClassName("div1");
        console.log(div1); // 输出:HTMLCollection(4) [div.div1, div.div1, div.div1, div.div1]
        console.log(div1[2]); // 输出:<div class="div1">333</div>(索引从0开始)

        // 4. getElementsByTagName:通过标签名获取元素集合
        var divs = document.getElementsByTagName('div');
        console.log(divs); // 输出:HTMLCollection(6) [div.div1, div.div1, div.div1, div.div1, div.div2, div.div3]
        console.log(divs[5]); // 输出:<div class="div3"></div>(第6个div,索引5)

        // 5. querySelector:再次演示(获取第一个.div1)
        var div111 = document.querySelector('.div1');
        console.log(div111); // 输出:<div class="div1">111</div>

        // 6. 获取html和body元素
        console.log(document.documentElement); // 输出:<html>...</html>
        console.log(document.body); // 输出:<body>...</body>
    </script>
</body>
</html>

1. getElementById():通过 ID 获取元素

  • 语法document.getElementById(id)

  • 参数id(字符串,元素的 id 属性值)

  • 返回值 :匹配的单个 Element 对象 ;若未找到,返回null

  • 特点:id 在页面中应唯一,因此是最快的获取方式之一。

2. getElementsByClassName():通过类名获取元素集合

  • 语法document.getElementsByClassName(className)

  • 参数className(字符串,元素的 class 属性值)

  • 返回值HTMLCollection 类数组对象(动态更新,包含所有匹配元素)。

  • 特点 :需通过索引访问具体元素(如div1[2]);集合会随 DOM 变化自动更新。

3. getElementsByTagName():通过标签名获取元素集合

  • 语法document.getElementsByTagName(tagName)

  • 参数tagName(字符串,HTML 标签名,如'div''span'

  • 返回值HTMLCollection 类数组对象(动态更新,包含所有该标签的元素)。

  • 特点:可获取页面中所有指定标签,同样需索引访问。

4. querySelector():通过 CSS 选择器获取第一个匹配元素

  • 语法document.querySelector(selector)

  • 参数selector(字符串,CSS 选择器,如'.class''#id''div'

  • 返回值第一个匹配的 Element 对象 ;若未找到,返回null

  • 特点:灵活强大,支持所有 CSS 选择器,但仅返回第一个匹配项。

5. document.documentElementdocument.body:直接获取根元素

  • document.documentElement:直接获取页面的<html>根元素。

  • document.body:直接获取页面的<body>元素。

方法汇总表格

|--------------------------------|----------------------------------------------|--------------|--------------------|--------------------------------------------|
| 方法 / 属性 | 语法 | 参数类型 | 返回值类型 | 特点 / 注意事项 |
| getElementById() | document.getElementById(id) | 字符串(id) | Element 或 null | id 需唯一,返回单个元素,性能最优。 |
| getElementsByClassName() | document.getElementsByClassName(className) | 字符串(class) | HTMLCollection(动态) | 返回类数组集合,需索引访问,集合随 DOM 动态更新。 |
| getElementsByTagName() | document.getElementsByTagName(tagName) | 字符串(标签) | HTMLCollection(动态) | 返回所有指定标签的集合,需索引访问,集合随 DOM 动态更新。 |
| querySelector() | document.querySelector(selector) | 字符串(CSS 选择器) | Element 或 null | 支持所有 CSS 选择器,仅返回第一个匹配元素,灵活但性能略低于 ById。 |
| document.documentElement | 直接访问 | 无 | Element() | 直接获取页面根元素。 |
| document.body | 直接访问 | 无 | Element() | 直接获取页面元素。 |

总结

  • 若需唯一元素 且有 id:优先用 getElementById()

  • 若需多个元素 (类名 / 标签):用 getElementsByClassName()getElementsByTagName()

  • 若需复杂选择器 (如后代、伪类):用 querySelector()(仅第一个)。

  • 直接获取<html><body>:用 document.documentElementdocument.body

相关推荐
humcomm几秒前
AI编程时代前端架构师的机遇和挑战
前端·架构·ai编程
折哥的程序人生 · 物流技术专研6 分钟前
《Java面试85题图解版(三)》上篇:高阶架构设计篇
java·开发语言·后端·面试·职场和发展
adminwolf9 分钟前
自研企业微信SCRM系统源码独立部署(Golang+Vue.js)
前端·vue.js·企业微信
小短腿的代码世界10 分钟前
QwtPolar 与实时示波器级渲染优化:雷达图到示波器曲线的极限性能调优
前端·qt·架构·交互
WL_Aurora12 分钟前
备战蓝桥杯国赛【Day 11】
python·蓝桥杯
早起傻一天~G18 分钟前
vue2+element-UI上传文件
javascript·vue.js·ui
Tutankaaa22 分钟前
学校知识竞赛怎么组织?从班级到年级的进阶方案
经验分享·学习·算法·职场和发展
洛水水25 分钟前
【力扣100题】42.杨辉三角
算法·leetcode·职场和发展
机器视觉知识推荐、就业指导27 分钟前
npm 安装/运行报错及解决方案
前端·npm·node.js
摇滚侠28 分钟前
12 移动端 WEB 前端 WEB 开发 HTML5 + CSS3 + 移动 WEB
前端·css3·html5