getelementsbytagname是javascript中根据标签名获取动态htmlcollection的方法,返回实时更新的元素集合,支持大小写不敏感标签名和通配符*,但不支持css选择器。

getElementsByTagName 是 JavaScript 中用于根据标签名获取元素集合的原生方法,它返回一个动态的 HTMLCollection(不是数组,但可用索引访问),包含当前节点下所有匹配指定标签名的后代元素。
基本用法:从整个文档或某个父元素中查找
最常见的是在 document 上调用,查找全页面中所有某类标签:
const divs = document.getElementsByTagName('div');
console.log(divs[0]); // 第一个 div 元素
console.log(divs.length); // 总数量
```
也可以在某个具体元素上调用,只查找它的子树:
```jsconst container = document.getElementById('main');
const ps = container.getElementsByTagName('p'); // 只找 #main 内部的 p 标签
```
注意返回的是 HTMLCollection,不是数组
HTMLCollection 是**实时集合**(live collection)——如果 DOM 后续新增或删除了匹配元素,它会自动更新。它不支持数组方法(如 map、forEach),但可以:
- 用
for循环或for...of遍历 - 用
Array.from()转成数组再操作 - 用展开运算符
[...collection]
const imgs = document.getElementsByTagName('img');
// ✅ 推荐遍历方式
for (let i = 0; i console.log(imgs[i].src);
}
// ✅ 转数组后使用 map
const srcs = Array.from(imgs).map(img => img.src);
```
区分大小写与通配符
标签名参数是**大小写不敏感的**(HTML 模式下),'DIV'、'div'、'Div' 效果一样。特殊值 '*' 表示匹配所有元素:
const allElements = document.getElementsByTagName('*'); // 获取全部元素(含 body、html 等)
```
注意:getElementsByTagName 不支持 CSS 选择器(如 'div.active'),那是 querySelectorAll 的职责。
和 querySelectorAll 的关键区别
如果你需要更灵活的查找(类名、属性、嵌套关系等),优先考虑 querySelectorAll:
-
getElementsByTagName('p')→ 只能按标签名,速度快,返回动态集合 -
querySelectorAll('p')→ 支持完整 CSS 选择器,返回静态 NodeList,不会随 DOM 变化自动更新
多数现代开发场景中,querySelectorAll 更常用;但若只需简单按标签批量取元素,getElementsByTagName 依然轻量高效。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











