由于HTML文档被浏览器解析后就是一棵DOM树,要改变HTML的结构,就需要通过JavaScript来操作DOM。
始终记住DOM是一个树形结构。操作一个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不支持querySelector和querySelectorAll。IE8仅有限支持。
严格地讲,我们这里的DOM节点是指Element,但是DOM节点实际上是Node,在HTML中,Node包括Element、Comment、CDATA_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节点元素的方法小结
# 遍历
# 是一个
# 几个
# 文档
# 第一个
# 是指
# 可以直接
# 不支持
# 请选择
# 种方法
# 一棵
# 将该
# 符合条件
# 最常用
# 增加了
# 严格地
# 删掉了
# 全局变量
# 选择器
# 是唯一
相关文章:
如何在Golang中指定模块版本_使用go.mod控制版本号
如何在万网主机上快速搭建网站?
如何快速搭建二级域名独立网站?
网站专业制作公司有哪些,做一个公司网站要多少钱?
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
如何通过虚拟主机空间快速建站?
网站制作软件免费下载安装,有哪些免费下载的软件网站?
如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法
建站之星×万网:智能建站系统+自助建站平台一键生成
制作电商网页,电商供应链怎么做?
已有域名和空间如何搭建网站?
如何在Golang中使用replace替换模块_指定本地或远程路径
如何通过西部建站助手安装IIS服务器?
制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?
建站主机SSH密钥生成步骤及常见问题解答?
XML的“混合内容”是什么 怎么用DTD或XSD定义
微信小程序 五星评分(包括半颗星评分)实例代码
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
如何在云服务器上快速搭建个人网站?
建站之星24小时客服电话如何获取?
如何在服务器上配置二级域名建站?
无锡营销型网站制作公司,无锡网选车牌流程?
广州建站公司哪家好?十大优质服务商推荐
如何快速搭建安全的FTP站点?
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
小型网站建站如何选择虚拟主机?
建站之星伪静态规则如何正确配置?
教育培训网站制作流程,请问edu教育网站的域名怎么申请?
如何配置FTP站点权限与安全设置?
网站制作需要会哪些技术,建立一个网站要花费多少?
如何在建站主机中优化服务器配置?
如何用腾讯建站主机快速创建免费网站?
大型企业网站制作流程,做网站需要注册公司吗?
如何获取开源自助建站系统免费下载链接?
武汉外贸网站制作公司,现在武汉外贸前景怎么样啊?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
如何高效配置香港服务器实现快速建站?
如何快速生成专业多端适配建站电话?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
,如何利用word制作宣传手册?
沈阳制作网站公司排名,沈阳装饰协会官方网站?
如何通过wdcp面板快速创建网站?
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
网站制作报价单模板图片,小松挖机官方网站报价?
*服务器网站为何频现安全漏洞?
实例解析angularjs的filter过滤器
,在苏州找工作,上哪个网站比较好?
建站主机如何选?性能与价格怎样平衡?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
*请认真填写需求信息,我们会在24小时内与您取得联系。