document.images 比 querySelectorAll('img') 更快,因其不经过 CSS 选择器引擎解析,而是直接从 DOM 解析阶段构建的内部图片索引中获取,原生、轻量、同步。

document.images 是一个只读的 HTMLCollection,直接返回页面中所有 元素(包括具有 src 属性的 ,以及部分浏览器中内联 SVG 的 ,但**不包含 CSS 背景图、 中的 或懒加载未解析的 data-src 图片**)。
为什么 document.images 比 querySelectorAll('img') 更快?
它不经过 CSS 选择器引擎解析,而是直接从 DOM 解析阶段构建好的内部图片索引中获取,原生、轻量、同步,适合需要批量操作图片的场景(如预加载统计、alt 检查、宽高批量修正)。
基础用法:获取全部 img 元素
直接访问即可,返回的是实时集合(live collection),DOM 变化会自动反映:
const imgs = document.images;console.log(imgs.length); // 当前页面 img 数量console.log(imgs[0]); // 第一张图片元素
常用实用操作示例
遍历并处理每张图片:
- 检查缺失 alt:
Array.from(document.images).forEach(img => { if (!img.alt.trim()) console.warn('缺少 alt:', img.src); }); - 统一设置 loading 属性:
document.images.forEach(img => img.loading = 'lazy');(注意:需确保运行时浏览器支持,且HTMLCollection原生不支持 forEach,建议转数组或用 for 循环) - 安全遍历推荐写法:
for (let i = 0; i
注意事项与兼容性
该属性在所有现代浏览器及 IE6+ 中均可用,但需注意:
- 仅包含已解析的
标签,动态插入后立即可用(无需等待 load) - 不包含通过
background-image显示的图片 - 若页面有
,多数浏览器**不计入**document.images - 在 iframe 中使用需切换上下文:
iframe.contentDocument.images
不复杂但容易忽略——它是 DOM 查询中最轻量的“图片专用通道”。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











