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

 更新时间:2017年07月03日 10:24:53   作者:liaoxuefeng  
由于HTML文档被浏览器解析后就是一棵DOM树,要改变HTML的结构,就需要通过JavaScript来操作DOM。始终记住DOM是一个树形结构。

由于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 = ???;

相关文章

  • 详解Js模块化的作用原理和方案

    详解Js模块化的作用原理和方案

    这篇文章主要介绍了Js模块化的作用原理和方案,对JS模块化感兴趣的同学,可以参考下
    2021-04-04
  • 探索webpack模块及webpack3新特性

    探索webpack模块及webpack3新特性

    webpack是一个强大的模块打包工具,在处理依赖、模块上都很优秀,本文从bundle.js文件分析出发去探索了不同模块方案的加载机制,初步去理解webpack,并且对webpack3特性进行阐述
    2017-09-09
  • 小程序扫描普通链接二维码跳转小程序指定界面方法

    小程序扫描普通链接二维码跳转小程序指定界面方法

    这篇文章主要介绍了小程序扫描普通链接二维码跳转小程序指定界面,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 文字垂直滚动之javascript代码

    文字垂直滚动之javascript代码

    这篇文章主要应用javascript代码实现文字垂直滚动的效果,需要的朋友可以参考下
    2015-07-07
  • js实现小窗口拖拽效果

    js实现小窗口拖拽效果

    这篇文章主要为大家详细介绍了js实现小窗口拖拽效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • 所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解

    所见即所得的富文本编辑器bootstrap-wysiwyg使用方法详解

    这篇文章主要为大家分享一款所见即所得的富文本编辑器bootstrap-wysiwyg,并详细告诉大家文本编辑器bootstrap-wysiwyg的使用方法,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • javaScript实现滚动新闻的方法

    javaScript实现滚动新闻的方法

    这篇文章主要介绍了javaScript实现滚动新闻的方法,涉及javascript实现页面滚动的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 小程序展示弹窗常见API实例详解

    小程序展示弹窗常见API实例详解

    弹窗对我们大家来说应该都不陌生,这篇文章主要给大家介绍了关于小程序展示弹窗常见API的相关资料,主要包括showToast, showModal,showLoading和showActionSheet,需要的朋友可以参考下
    2022-09-09
  • javascript实现仿银行密码输入框效果的代码

    javascript实现仿银行密码输入框效果的代码

    这篇文章通过实例代码给大家介绍了javascript实现仿银行密码输入框效果,代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2007-12-12
  • JS如何实现手机端输入验证码效果

    JS如何实现手机端输入验证码效果

    这篇文章主要介绍了JS如何实现手机端输入验证码效果,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05

最新评论