零基础快速入门前端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

相关推荐
牛奶2 小时前
为什么关掉浏览器再打开,你还是登录状态?
前端·网络协议·https
bjxiaxueliang2 小时前
一文掌握Python aiohttp:异步Web开发从入门到部署
开发语言·前端·python
吴声子夜歌2 小时前
JavaScript——JSON序列化和反序列化
开发语言·javascript·json
Liudef062 小时前
从0到1开发ReAct智能体:原理、实现与最佳实践
前端·react.js·前端框架
金豆呀2 小时前
WPS自定义公式,相似度匹配
前端·javascript·wps
jiayong232 小时前
0基础学习VUE3 第 1 课:项目启动流程
前端·vue.js·学习
今天又在摸鱼2 小时前
学习vue前必要的js语法
前端·vue.js·学习
小小张自由—>张有博2 小时前
【深度解析】从 claude 命令到 cli.js 的完整执行链路
开发语言·javascript·ecmascript
仰泳的熊猫2 小时前
题目2584:蓝桥杯2020年第十一届省赛真题-数字三角形
数据结构·c++·算法·蓝桥杯