JavaScript怎样操作DOM元素【教程】

12次阅读

优先用 getElementById 获取元素,速度快且返回单个元素或 NULL;querySelector 支持 css 选择器但只返首个匹配项;修改内容用 textContent(安全)或 innerhtml(需信任来源);设属性优先直接访问内置属性,自定义属性用 setAttribute;动态元素事件委托,移除时须用同一函数引用。

JavaScript怎样操作DOM元素【教程】

直接用 document.querySelectordocument.getElementById 获取元素,再通过属性或方法修改内容、样式、事件——这是最常用也最稳妥的路径。别一上来就写 document.getElementsByTagName 然后遍历,容易漏判空值或类型错误。

获取 dom 元素时,选 querySelector 还是 getElementById

优先用 getElementById:它只认 ID,速度快、无歧义、返回单个元素(或 null),适合有明确 ID 的场景;querySelector 更灵活,支持 CSS 选择器,但要注意它只返回第一个匹配项,且不支持伪类(如 :hover);如果真要找多个,用 querySelectorAll,它返回的是 nodeList,不是数组,不能直接用 mapforEach(得先转成数组或用 for...of)。

  • document.getElementById('btn') → 返回 Elementnull
  • document.querySelector('.item.active') → 返回第一个匹配的 Elementnull
  • document.querySelectorAll('input[type="text"]') → 返回 NodeList,需 Array.from()循环遍历

修改内容和属性,别混用 innerHTMLtextContent

innerHTML 解析 HTML 字符串,有 xss 风险,仅在你完全信任内容来源时才用;textContent 只当纯文本处理,安全、快,适合填用户输入、API 返回的字符串;设属性用 element.setAttribute('data-id', '123'),读属性用 element.getAttribute('data-id'),但内置属性(如 idclassNamevalue)建议直接访问 el.idel.classNameel.value,更可靠(尤其表单控件的 value 值以属性为准,而非 getAttribute('value'))。

  • 显示用户昵称:el.textContent = userName(别用 innerHTML
  • 插入带样式的提示:el.innerHTML = '必填'(确认内容可信)
  • 动态设自定义属性:btn.setAttribute('data-loading', 'true')

绑定事件时,注意事件委托和移除时机

给动态生成的元素(比如列表项)绑事件,别每个都调用 addEventListener,改用事件委托:在父容器上监听,用 event.target 判断是否命中目标;另外,用 addEventListener 添加的监听器,必须用 removeEventListener 移除——而且函数引用必须是同一个,匿名函数无法移除;若需多次添加/移除,把回调定义为具名函数或存在变量里。

立即学习Java免费学习笔记(深入)”;

  • 委托示例:listEl.addEventListener('click', e => { if (e.target.matches('.delete-btn')) { /* 处理删除 */ } })
  • 错误写法:el.addEventListener('click', () => {...}) → 后续无法精确移除
  • 正确写法:const handler = () => {...}; el.addEventListener('click', handler); el.removeEventListener('click', handler);

DOM 操作本身不难,真正卡住人的往往是「获取不到」、「改了没反应」、「事件重复绑定」这三类问题——核心在于每次操作前确认元素存在、类型正确、作用域清晰,而不是砌技巧。

text=ZqhQzanResources