节点类型

文档节点:

一棵DOM树的顶端是文档节点,它呈现为整个页面(相当于document对象),当需要访问任何元素、属性或文本节点时,都需要通过文档节点来进行导航。(document.)

元素节点

HTML元素描述了HTML页面的结构,需要访问DOM树时,需要从查找元素开始。一旦找到所需的元素,然后就可以根据需要来访问它的文本和属性节点。所以需要先学习访问元素节点的方法,然后再学习如何访问和修改文本及属性值。

属性节点

HTML元素的开始标签中可以包含若干属性,这些属性在DOM树中形成属性节点。

文本节点

当访问这些元素节点时,可以访问元素内部的文本,这些文本保存在其文本节点中。文本节点没有子节点。如果一个元素包含文本和其他子元素,这些子元素并非文本节点的子节点,而是整个容器元素的子节点<p>name<em>fresh</em>figs</p>,父节点为p,子节点为name,<em>fresh</em>,figs。

DOM操作

1访问元素

1.1选择单个元素

getElementById()返回对拥有指定 id 的第一个对象的引用。

querySelector() 使用css选择器,返回第一个匹配的元素。querySelector("li#id1");查询li的id=‘id1’的元素。

1.2选择多个元素

getElementsByClassName();  选择所有在class属性上使用了特定值的元素

getElementsByTagName();     选择所有使用了指定标记的元素

querySelectorAll()         使用Css选择器来选择所有匹配的元素、

childNodes            孩子节点数组

1.3在元素节点之间遍历

parentNode      返回当前元素的父节点

previousSibling  返回当前元素的前一个兄弟节点

nextSibling  返回当前元素的后一个节点

firstChild   返回当前元素的第一个子节点

lastChild   返回当前袁术的最后一个子节点

在绝大数浏览器,除了IE,都会将元素之间的空白(比如空格或回车)当做文本节点来处理,所以上面的属性(除了parentNode属性)在不同的浏览器中可能会返回不同的元素。所以应该避免使用这些DOM属性,解决这个问题的一个最受欢迎的方法是使用jquery这样的JavaScript库。

2.操纵这些元素

nodeType   元素节点类型

2.1 访问/更新文本节点

nodeValue

2.2操作HTML内容

innerHTML   访问/更新子元素和文本内容。

textContent  访问元素的文本内容     <p id="p1">fresh <em>figs</em></p>   document.getElementById("p1").textContent 结果为 fresh figs

innertText   访问元素的文本内容  最好不要使用,1.firefox不支持,2.遵从css,css规则隐藏了的元素的文本内容获取不到。3、因为innerText考虑到布局规则来判断元素的可见性,它在获取文本内容时的速度要比textContent更慢。

createElement()创建元素节点

createTextNode()创建文本节点

appendChild()  向元素添加新的子节点,作为最后一个子节点。

removeChild()  移除节点

insertBefore   方法在您指定的已有子节点之前插入新的子节点   parentNode.insertBefore(newItem,existingItem);

2.3访问或更新属性值

className/id    可以使用它们来获取或更新class和id属性

hasAttribute()是否存在某属性

setAttrubute ()设置元素节点属性

getAttribute()  获取元素节点属性

removeAttribute()删除节点

Js dom 学习的更多相关文章

  1. JS DOM学习笔记

    1.window对象代表当前浏览器窗口 2.使用window对象的属性.方法的时候可以省略window.例如:window.alert("hello")一般写成alert(&quo ...

  2. js dom学习

    创建dom元素 var oLi = document.creteElement('li'); //创建livar aLi = oUl.getElementsByTagName('li');oLi.in ...

  3. js再学习笔记

    #js再学习笔记 ##基本 1.js严格区分大小写   2.js末尾的分号可加,也可不加   3.六种数据类型(使用typeof来检验数据的类型) `typeof` - undefined: `var ...

  4. Ext JS 6学习文档–第1章–ExtJS入门指南

    Ext JS 入门指南 前言 本来我是打算自己写一个系列的 ExtJS 6 学习笔记的,因为 ExtJS 6 目前的中文学习资料还很少.google 搜索资料时找到了一本国外牛人写的关于 ExtJS ...

  5. JS Dom节点操作demo!

    通过黑马课程的学习,在这里分享一个js Dom中节点操作的小练习 需求:使用js创建一个4*3的表格table. onload = function(){ function c(tagName){ r ...

  6. vue.js的学习

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Ext JS 6学习文档-第8章-主题和响应式设计

    Ext JS 6学习文档-第8章-主题和响应式设计 主题和响应式设计 本章重点在 ExtJS 应用的主题和响应式设计.主要有以下几点内容: SASS 介绍和入门 主题 响应式设计 SASS 介绍和入门 ...

  8. Ext JS 6学习文档-第6章-高级组件

    Ext JS 6学习文档-第6章-高级组件 高级组件 本章涵盖了高级组件,比如 tree 和 data view.它将为读者呈现一个示例项目为 图片浏览器,它使用 tree 和 data view 组 ...

  9. JS继续学习记录(一)

    JS继续学习记录(一) 总感觉自己的js code写的还算可以,但是又深知好像只知道一些皮毛,所以打算仔细记录一下js晋级学习过程,日日往复 先记录一下自己目前对js的了解吧(20180828) js ...

随机推荐

  1. python学习笔记(2):科学计算及数据可视化入门

    一.NumPy 1.NumPy:Numberical Python 2.高性能科学计算和数据分析的基础包 3.ndarray,多维数组(矩阵),具有矢量运算的能力,快速.节省空间 (1)ndarray ...

  2. TCP/IP四层协议

    1.数据链路层 数据链路层实现了网卡接口的网络驱动程序,处理数据在物理媒介(以太网,令牌环)上的传输,常用协议包含ARP(地址解析协议),RARP(逆地址解析协议)两个协议,他们实现了IP地址和物理地 ...

  3. vue 源码分析

    初始化  Data,props,event监听 beforCreated,Created 挂载 执行编译,首次渲染.创建和追加过程 编译 编译模块分为三个阶段:parse.optimize.gener ...

  4. Spring基础07——配置集合属性

    1.集合属性 在Spring中可以通过一组内置的xml标签(例如<list>,<set>或<map>)来配置集合属性. 2.配置List集合 配置java.util ...

  5. IPv6地址格式示例及IPv6与IPv4的区别分析

    认识IPv6地址 IPv4地址是类似 A.B.C.D 的格式,它是32位,用\".\"分成四段,用10进制表示: 而IPv6地址类似X:X:X:X:X:X:X:X的格式,它是128 ...

  6. mysql 5.0存储过程学习总结

    mysql存储过程的创建,删除,调用及其他常用命令 本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加). QQ群:   281442983 (点击链接加入群:http://jq.q ...

  7. 使用navcat进行筛选和排序

  8. python-第三方包的安装和升级和卸载

    安装源: 豆瓣   http://pypi.douban.com/simple/ 本地安装: egg文件:  使用settools自带的安装脚本easy_install进行安装 whl文件:      ...

  9. 【leetcode】1111. Maximum Nesting Depth of Two Valid Parentheses Strings

    题目如下: A string is a valid parentheses string (denoted VPS) if and only if it consists of "(&quo ...

  10. 关于反射和动态代理和AOP

    package Exercise.reflect; /** * 反射把java中所有的东西都当做对象,甚至是类的本身也作为一种对象,并把它作为Class的对象的实例: * 反射是把类.类的属性.方法都 ...