JavaScript之DOM_动力节点Java学院整理

发布时间 - 2026-01-11 02:08:56    点击率:

由于HTML文档被浏览器解析后就是一棵DOM树,要改变HTML的结构,就需要通过JavaScript来操作DOM。
始终记住DOM是一个树形结构。操作一个DOM节点实际上就是这么几个操作:

  1. 更新:更新该DOM节点的内容,相当于更新了该DOM节点表示的HTML的内容;
  2. 遍历:遍历该DOM节点下的子节点,以便进行进一步操作;
  3. 添加:在该DOM节点下新增一个子节点,相当于动态增加了一个HTML节点;
  4. 删除:将该节点从HTML中删除,相当于删掉了该DOM节点的内容以及它包含的所有子节点。

在操作一个DOM节点前,我们需要通过各种方式先拿到这个DOM节点。最常用的方法是document.getElementById()document.getElementsByTagName(),以及CSS选择器document.getElementsByClassName()

由于ID在HTML文档中是唯一的,所以document.getElementById()可以直接定位唯一的一个DOM节点。

document.getElementsByTagName()document.getElementsByClassName()总是返回一组DOM节点。要精确地选择DOM,可以先定位父节点,再从父节点开始选择,以缩小范围。

例如:

// 返回ID为'test'的节点:
var test = document.getElementById('test');

// 先定位ID为'test-table'的节点,再返回其内部所有tr节点:
var trs = document.getElementById('test-table').getElementsByTagName('tr');

// 先定位ID为'test-div'的节点,再返回其内部所有class包含red的节点:
var reds = document.getElementById('test-div').getElementsByClassName('red');

// 获取节点test下的所有直属子节点:
var cs = test.children;

// 获取节点test下第一个、最后一个子节点:
var first = test.firstElementChild;
var last = test.lastElementChild;

第二种方法是使用querySelector()querySelectorAll(),需要了解selector语法,然后使用条件来获取节点,更加方便:

// 通过querySelector获取ID为q1的节点:
var q1 = document.querySelector('#q1');

// 通过querySelectorAll获取q1节点内的符合条件的所有节点:
var ps = q1.querySelectorAll('div.highlighted > p');

注意:低版本的IE<8不支持querySelectorquerySelectorAll。IE8仅有限支持。

严格地讲,我们这里的DOM节点是指Element,但是DOM节点实际上是Node,在HTML中,Node包括ElementCommentCDATA_SECTION等很多种,以及根节点Document类型,但是,绝大多数时候我们只关心Element,也就是实际控制页面结构的Node,其他类型的Node忽略即可。根节点Document已经自动绑定为全局变量document

练习

如下的HTML结构:

JavaScript
Java
Python
Ruby
Swift
Scheme
Haskell

<!-- HTML结构 -->
<div id="test-div">
<div class="c-red">
  <p id="test-p">JavaScript</p>
  <p>Java</p>
 </div>
 <div class="c-red c-green">
  <p>Python</p>
  <p>Ruby</p>
  <p>Swift</p>
 </div>
 <div class="c-green">
  <p>Scheme</p>
  <p>Haskell</p>
 </div>
</div>

请选择出指定条件的节点:

// 选择<p>JavaScript</p>:
var js = ???;
// 选择<p>Python</p>,<p>Ruby</p>,<p>Swift</p>:
var arr = ???;
// 选择<p>Haskell</p>:
var haskell = ???;


# JavaScript  # DOM  # javascript 获取HTML DOM父、子、临近节点  # javascript学习笔记(三)BOM和DOM详解  # JS DOM 操作实现代码  # javascript转换字符串为dom对象(字符串动态创建dom)  # javascript dom 操作详解 js加强  # javascript获取dom的下一个节点方法  # Js 获取HTML DOM节点元素的方法小结  # 遍历  # 是一个  # 几个  # 文档  # 第一个  # 是指  # 可以直接  # 不支持  # 请选择  # 种方法  # 一棵  # 将该  # 符合条件  # 最常用  # 增加了  # 严格地  # 删掉了  # 全局变量  # 选择器  # 是唯一 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何用狗爹虚拟主机快速搭建网站?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  微信小程序 input输入框控件详解及实例(多种示例)  微信小程序 五星评分(包括半颗星评分)实例代码  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  JavaScript常见的五种数组去重的方式  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  Laravel怎么使用Blade模板引擎_Laravel模板继承与Component组件复用【手册】  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  如何用IIS7快速搭建并优化网站站点?  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  网站制作免费,什么网站能看正片电影?  如何在万网开始建站?分步指南解析  Android okhttputils现在进度显示实例代码  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  js代码实现下拉菜单【推荐】  如何打造高效商业网站?建站目的决定转化率  如何在IIS7上新建站点并设置安全权限?  如何在腾讯云服务器上快速搭建个人网站?  音响网站制作视频教程,隆霸音响官方网站?  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  如何在Windows虚拟主机上快速搭建网站?  JavaScript模板引擎Template.js使用详解  青岛网站建设如何选择本地服务器?  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  Laravel怎么清理缓存_Laravel optimize clear命令详解  如何在七牛云存储上搭建网站并设置自定义域名?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  JS去除重复并统计数量的实现方法  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  Laravel如何发送邮件_Laravel Mailables构建与发送邮件的简明教程  JS碰撞运动实现方法详解  千库网官网入口推荐 千库网设计创意平台入口  郑州企业网站制作公司,郑州招聘网站有哪些?  详解jQuery中基本的动画方法  香港服务器租用费用高吗?如何避免常见误区?  网站优化排名时,需要考虑哪些问题呢?  Laravel如何实现全文搜索功能?(Scout和Algolia示例)  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  手机软键盘弹出时影响布局的解决方法  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  如何用wdcp快速搭建高效网站?  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?