零基础快速入门前端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.documentElement与document.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.documentElement 或 document.body。

相关推荐
孔令飞19 分钟前
Go中指针引用Go中指针引用Go中指针引用Go中指针引用Go中指针引用Go中指针引用Go中指针引用Go中指针引用Go中指针引用Go中指针引用Go中指针引用Go中
前端
可乐鸡翅yeah_26 分钟前
hls.js 缓冲区参数 maxBufferLength、maxBufferSize 通俗讲解与业务调参
开发语言·javascript·ios·音视频·safari·m3u8
溪语流沙32 分钟前
【Web全栈进阶】PostgreSQL上手:Docker跑库 + 把早报站从SQLite迁过去
前端·docker·postgresql
IT_陈寒38 分钟前
SpringBoot自动配置的坑:你以为的捷径可能是弯路
前端·人工智能·后端
paopaokaka_luck38 分钟前
高校社团管理(AI辅助任务分配、协同过滤算法推荐、ECharts数据可视化、活动参与闭环、校园交流与反馈、器材借还管理)
java·前端·javascript·spring boot·数据分析·echarts
500841 小时前
React Native for OpenHarmony 实战:三方库 react-native-volume-control 的鸿蒙化适配指南
javascript·react native·react.js·electron·harmonyos
薛一半1 小时前
React-Redux三重优化实战揭秘
javascript·vue.js·react.js
Dovis(誓平步青云)1 小时前
导览音频切换太快,旧讲解不能覆盖新展品
android·前端·javascript·ecmascript·音视频·宠物
2601_9499506310 小时前
练题簿在线免费刷题 从资料整理到考前自测
面试·职场和发展·pdf·word·刷题
福兮说12 小时前
设计稿是 #4A7C6F,页面量出来是 #4B7C6F:HEX、HSL、透明度、canvas 来回转的七个坑
前端·javascript·css·canvas