Skip to content

参考

基于现代 JavaScript(ES2025 · 核于 2026-06)

速查

  • 查找首选 querySelector / querySelectorAll(CSS 选择器、静态集合);辅助 matches / closest / contains
  • 遍历只看元素:children / firstElementChild / nextElementSibling / parentElement
  • 改内容:纯文本 textContent(安全)、HTML innerHTML(含用户输入有 XSS
  • 增删createElement 造、append / before / after 插、remove 删、DocumentFragment 批量
  • 属性el.value(当前值)/ datasetdata-*)/ getAttributeclassList样式style + getComputedStyle
  • 事件:统一 addEventListenerevent.target(源)vs currentTarget(绑监听者);preventDefault 阻默认 / stopPropagation 阻传播(慎用)
  • 委托:祖先一个监听 + target.closest(选择器);自定义事件 CustomEvent + dispatchEvent
  • 加载DOMContentLoaded(DOM 就绪)/ load(全资源);脚本用 defer / type="module"

查找方法速查

方法按什么查能在元素上调用集合类型
querySelector(css)CSS 选择器单个元素 / null
querySelectorAll(css)CSS 选择器静态 NodeList
getElementById(id)id✘(仅 document单个元素 / null
getElementsByTagName(tag)标签名 / "*"实时 HTMLCollection
getElementsByClassName(cls)类名实时 HTMLCollection
getElementsByName(name)name 特性✘(仅 document实时 HTMLCollection
elem.matches(css)自身是否匹配布尔
elem.closest(css)向上找最近匹配(含自身)元素 / null
parent.contains(node)是否包含布尔

遍历属性速查

维度全部节点(含文本 / 注释)只看元素
parentNodeparentElement
子集合childNodes(实时)children
首 / 末子firstChild / lastChildfirstElementChild / lastElementChild
前 / 后兄弟previousSibling / nextSiblingpreviousElementSibling / nextElementSibling
有无子hasChildNodes()children.length

根入口:document.documentElement<html>)、document.headdocument.body。 节点类型 nodeType1=元素、3=文本、8=注释、9=文档。

修改文档速查

操作现代写法老式写法
造元素 / 文本createElement(tag) / createTextNode(t)
插到内部末尾parent.append(...)parent.appendChild(node)
插到内部开头parent.prepend(...)
插到前 / 后node.before(...) / node.after(...)parent.insertBefore(node, ref)
替换node.replaceWith(...)parent.replaceChild(new, old)
删除node.remove()parent.removeChild(node)
插 HTML 串elem.insertAdjacentHTML(where, html)innerHTML +=,不推荐)
克隆elem.cloneNode(true/false)

insertAdjacentHTML 位置:"beforebegin"(元素前)/ "afterbegin"(内容头)/ "beforeend"(内容尾)/ "afterend"(元素后)。 内容设置:textContent(纯文本,安全)vs innerHTML(解析 HTML,含用户输入有 XSS)。批量插入用 DocumentFragment

属性 / 特性 / 样式速查

需求API
读控件当前值el.value(文本)/ el.checked(布尔)/ select.value
读写非标准特性getAttribute / setAttribute / hasAttribute / removeAttribute
自定义数据el.dataset.xxxdata-xxx(连字符转驼峰)
增删类classList.add / remove / toggle / contains;整串 className
改内联样式el.style.属性(驼峰,如 backgroundColor);整串 style.cssText
读最终样式getComputedStyle(el).属性(只读、解析值、用完整属性名)
量尺寸offsetWidth/HeightclientWidth/Height
量坐标getBoundingClientRect()(视口坐标)、scrollTop / scrollHeight

要点:特性=HTML 里写的字符串、属性=DOM 对象上的任意类型value 特性=初始值、属性=当前值;href 特性=原样、属性=完整 URL。

事件速查

绑定 / 解绑

js
elem.addEventListener(type, handler, { capture, once, passive });
elem.removeEventListener(type, handler, options); // handler 须同一引用

event 对象常用字段

字段 / 方法含义
event.type事件类型字符串(如 "click"
event.target真正触发事件的元素(事件源)
event.currentTarget当前处理事件的元素(= 绑监听者 = this
event.clientX / clientY鼠标相对视口坐标
event.preventDefault()阻止浏览器默认动作(跳转 / 提交 / 右键菜单等)
event.stopPropagation()阻止继续传播(慎用,破坏委托)
event.stopImmediatePropagation()连同元素上其它监听器一并停止
event.isTrusted真实用户事件 true,脚本派发 false

三阶段:捕获(document→目标)→ 目标 → 冒泡(目标→document);addEventListener 默认在冒泡阶段,传 { capture: true } 改捕获阶段。

自定义事件

js
const ev = new CustomEvent("my:event", { detail: { x: 1 }, bubbles: true });
elem.dispatchEvent(ev); // 同步派发
// 监听:addEventListener("my:event", e => e.detail.x)

常用事件名速查

类别事件
鼠标clickdblclickcontextmenumousedownmouseupmousemovemouseovermouseout
键盘keydownkeyup
表单控件input(实时)、change(失焦确认)、focus / blur(不冒泡)、focusin / focusout(冒泡)、submit
页面加载DOMContentLoadeddocument)、load / beforeunload / unloadwindow)、readystatechange
滚动 / 尺寸scrollresizewheel
过渡 / 动画transitionendanimationend

页面加载与脚本时机速查

document.readyState"loading""interactive"(≈DOMContentLoaded)→ "complete"(≈load)。

脚本方式阻塞解析执行时机顺序DOMContentLoaded 等它
<script>立即文档顺序
<script defer>解析完、DOMContentLoaded文档顺序
<script async>下完即跑无序不等
<script type="module">defer文档顺序

现代特性 Baseline 状态(2026-06 核)

特性状态用法建议
querySelector / querySelectorAll✅ Baseline 广泛可用放心用,查找首选
classList / dataset✅ Baseline 广泛可用放心用
append / prepend / before / after / remove✅ Baseline 广泛可用取代老式 appendChild
addEventListener(含 once / passive✅ Baseline 广泛可用事件绑定唯一推荐
CustomEvent / dispatchEvent✅ Baseline 广泛可用放心用
getComputedStyle / getBoundingClientRect✅ Baseline 广泛可用放心用
<script type="module">✅ Baseline 广泛可用现代脚本默认选择
innerHTML 插用户输入⛔ 安全红线永远改用 textContent
document.write⛔ 已淘汰不要再用

权威链接

标准 / 规范

课程 / 指南

兼容性 / 调试

相关页