由于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节点元素的方法小结
# 遍历
# 是一个
# 几个
# 文档
# 第一个
# 是指
# 可以直接
# 不支持
# 请选择
# 种方法
# 一棵
# 将该
# 符合条件
# 最常用
# 增加了
# 严格地
# 删掉了
# 全局变量
# 选择器
# 是唯一
相关文章:
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
,网站推广常用方法?
香港服务器如何优化才能显著提升网站加载速度?
家庭服务器如何搭建个人网站?
如何选择CMS系统实现快速建站与SEO优化?
青浦网站制作公司有哪些,苹果官网发货地是哪里?
如何通过山东自助建站平台快速注册域名?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
css网站制作参考文献有哪些,易聊怎么注册?
高防服务器租用首荐平台,企业级优惠套餐快速部署
建站之星CMS建站配置指南:模板选择与SEO优化技巧
如何正确下载安装西数主机建站助手?
建站之星导航菜单设置与功能模块配置全攻略
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
建站之星展会模版如何一键下载生成?
html制作网站的步骤有哪些,iapp如何添加网页?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
建站之星×万网:智能建站系统+自助建站平台一键生成
存储型VPS适合搭建中小型网站吗?
深圳网站制作案例,网页的相关名词有哪些?
企业微网站怎么做,公司网站和公众号有什么区别?
如何选择服务器才能高效搭建专属网站?
制作公司内部网站有哪些,内网如何建网站?
公司网站的制作公司,企业网站制作基本流程有哪些?
javascript基本数据类型及类型检测常用方法小结
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
做企业网站制作流程,企业网站制作基本流程有哪些?
如何在VPS电脑上快速搭建网站?
建站之家VIP精选网站模板与SEO优化教程整合指南
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
建站之星下载版如何获取与安装?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
如何在宝塔面板中修改默认建站目录?
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
已有域名和空间,如何快速搭建网站?
如何快速生成高效建站系统源代码?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
c++ stringstream用法详解_c++字符串与数字转换利器
网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
如何快速上传建站程序避免常见错误?
如何挑选优质建站一级代理提升网站排名?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
怀化网站制作公司,怀化新生儿上户网上办理流程?
C++时间戳转换成日期时间的步骤和示例代码
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
*请认真填写需求信息,我们会在24小时内与您取得联系。