节点类型

文档节点:

一棵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. Asp.net MVC 发布到IIS6

    1.发布网站 2.打开IIS,添加网站 3.修改程序池,改为.net 4.0 4.添加虚拟目录(及添加aspnet_isapi.dll文件,该文件目录在“C:\Windows\Microsoft.NE ...

  2. 神经网络之:S型神经元

    1.S 型神经元和感知器类似,但是被修改为权重和偏置的微小改动只引起输出的微小变化 2.S型神经元结构: S型函数: 带有x1,x2,........,权重w1,w2.....,和偏置b的S型神经元的 ...

  3. Mongo--02 命令介绍

    目录 Mongo工具 1. 查看指令 2.插入命令 3.查询命令 4.更新数据 5.索引 5.删除 6.mongo命令介绍 7.创建用户和角色 Mongo工具 1. 查看指令 test:登录时默认存在 ...

  4. IDEA更改左侧目录层级结构

    齿轮---Compact Empty Middle Packages

  5. 关于sass、scss、less的概念性知识汇总

    这篇文章主要解答以下几个问题,供前端开发者的新手参考. 1.什么是Sass和Less? 2.为什么要使用CSS预处理器? 3.Sass和Less的比较 4.为什么选择使用Sass而不是Less? 什么 ...

  6. 《扩展和嵌入python解释器》1.4 模块方法表和初始化函数

    <扩展和嵌入python解释器>1.4 模块方法表和初始化函数   1.4 模块方法表和初始化函数 下面,我演示如何从Python程序调用spam_system().首先,我们需要在’方法 ...

  7. 岭回归、lasso

    参考:https://blog.csdn.net/Byron309/article/details/77716127     ----    https://blog.csdn.net/xbinwor ...

  8. 6362. 【NOIP2019模拟2019.9.18】数星星

    题目描述 题解 一种好想/好写/跑得比**记者还快的做法: 对所有询问排序,按照R递增的顺序来处理 维护每个点最后一次被覆盖的时间,显然当前右端点为R时的答案为所有时间≥L的点的权值之和 LCT随便覆 ...

  9. 如何使 C++ 的 StringBuilder 提升 4350% 的性能?

    介绍 经常出现客户端打电话抱怨说:你们的程序慢如蜗牛.你开始检查可能的疑点:文件IO,数据库访问速度,甚至查看web服务. 但是这些可能的疑点都很正常,一点问题都没有. 你使用最顺手的性能分析工具分析 ...

  10. 【gym102222K】Vertex Covers(高维前缀和,meet in the middle)

    题意:给定一张n点m边的图,点带点权,定义点覆盖的权值为点权之积,问所有点覆盖的权值之和膜q n<=36, 1<=a[i]<=1e9,1e8<=q<=1e9 思路:n&l ...