0

0

javascript DOM是什么_如何使用javascript操作网页元素?

夢幻星辰

夢幻星辰

发布时间:2026-01-10 21:08:50

|

438人浏览过

|

来源于php中文网

原创

dom是浏览器提供的html对象树接口,非js原生;推荐用queryselector系列获取元素;更新内容优先用textcontent防xss;修改样式用el.style而非setattribute;事件绑定必须用addeventlistener并注意解绑与委托。

javascript dom是什么_如何使用javascript操作网页元素?

DOM 是浏览器把 HTML 转成的对象树,不是 JS 自带的

DOM(Document Object Model)不是 JavaScript 语言的一部分,而是浏览器提供的编程接口。HTML 文档被加载后,浏览器会解析它,生成一棵节点树——每个 <div>、<code><p></p>、甚至文本和注释,都变成一个对象(比如 HTMLElementText),挂载在全局 document 对象下。JS 通过操作这棵树来改变页面内容、结构或样式。

document.querySelectordocument.querySelectorAll 找元素最稳妥

别再无脑用 getElementByIdgetElementsByClassName 了——它们返回的是“活的”集合(HTMLCollection),容易因 DOM 变动引发意外;而 querySelector 系列返回的是快照(Element 或静态 NodeList),行为更可预测。

  • document.querySelector('.btn') 返回第一个匹配的元素,没找到就返回 null(注意判空)
  • document.querySelectorAll('input[name="email"]') 返回所有匹配的元素,结果是只读的 NodeList,不能直接用 .push(),但能用 forEach
  • 选择器支持完整 CSS 语法,包括伪类:document.querySelector('button:disabled') 合法
  • 避免写太长的选择器链,比如 div#app > section.main ul li a[href^="/post"] —— 维护性差,也容易因 DOM 微调而断裂

修改元素内容别只记得 innerHTML,小心 XSS 和性能

innerHTML 看似方便,但它会触发 HTML 解析、重建子节点,开销大;更重要的是,如果插入用户输入的内容(比如表单值),不转义就直接拼进去,等于打开 XSS 漏洞。

动态WEB网站中的PHP和MySQL:直观的QuickPro指南第2版
动态WEB网站中的PHP和MySQL:直观的QuickPro指南第2版

动态WEB网站中的PHP和MySQL详细反映实际程序的需求,仔细地探讨外部数据的验证(例如信用卡卡号的格式)、用户登录以及如何使用模板建立网页的标准外观。动态WEB网站中的PHP和MySQL的内容不仅仅是这些。书中还提到如何串联JavaScript与PHP让用户操作时更快、更方便。还有正确处理用户输入错误的方法,让网站看起来更专业。另外还引入大量来自PEAR外挂函数库的强大功能,对常用的、强大的包

下载
  • 纯文本更新优先用 textContentel.textContent = 'Hello <script>alert(1)</script>' 会原样显示,不会执行脚本
  • 要插 HTML 片段且确认来源可信,才用 innerHTML;否则先用 DOMPurify.sanitize(htmlStr) 过滤
  • 批量更新多个子节点?别反复设 innerHTML。用 document.createDocumentFragment() 先组装,再一次性 appendChild
  • 改样式别直接拼字符串:el.style.color = 'red'el.setAttribute('style', 'color:red;') 更安全、更易维护

事件绑定要用 addEventListener,别写 onclick=...

内联事件(如 <button onclick="handleClick()"></button>)把结构和逻辑耦合死,无法动态控制,也不支持事件捕获、不支持多次绑定同一事件类型。现代写法必须用 addEventListener

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

  • 同一个元素可以多次调用 addEventListener('click', fn1)addEventListener('click', fn2),互不影响
  • 需要解绑时,必须传入**同一个函数引用**:el.addEventListener('click', handler)el.removeEventListener('click', handler);用匿名函数就永远解不掉
  • 监听委托场景(比如列表项动态增删),绑定到父容器,用 event.target 判断实际点击元素:listEl.addEventListener('click', e => { if (e.target.matches('li.delete-btn')) { /* ... */ } })
  • 注意默认行为:表单提交、链接跳转等,该 e.preventDefault() 就得调,别漏
const form = document.querySelector('#search-form');
form.addEventListener('submit', function(e) {
  e.preventDefault(); // 阻止页面刷新
  const query = document.querySelector('#q').value.trim();
  if (!query) return;
  fetch(`/api/search?q=${encodeURIComponent(query)}`)
    .then(r => r.json())
    .then(data => {
      const list = document.querySelector('#results');
      list.innerHTML = data.map(item => 
        `<li><a href="https://www.php.cn/link/907353eab452f43367a8c29311399935">${item.title}</a></li>`
      ).join('');
    });
});

DOM 操作看着简单,但真正稳定可靠的关键,在于理解「什么时候节点还没就绪」「哪些 API 返回的是实时集合」「事件绑定后有没有内存泄漏风险」——这些细节不踩一两次坑,很难有体感。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

251

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

988

2024.03.01

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

839

2023.08.22

php中foreach用法
php中foreach用法

本专题整合了php中foreach用法的相关介绍,阅读专题下面的文章了解更多详细教程。

202

2025.12.04

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

678

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

219

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1561

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

645

2023.11.24

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

3

2026.03.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.5万人学习

CSS教程
CSS教程

共754课时 | 38.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号