节点类型
- 元素节点
HTML的标签元素就是DOM的元素节点,它提供了一份文档的结构
- 文本节点
包含在元素节点内部,形成页面文档的主要内容
- 属性节点
用于对元素做出具体的描述,例如:a元素的href属性,img元素的alt属性
属性总是被放在起始标签里,因此属性节点也总是被包含在元素节点中
获取元素节点
- 获取元素节点有4种方法,分别通过元素ID,标签名字,类名和css选择器
- getElementById方法是document对象特有的函数,传入一个参数即元素的id属性值,将返回一个对象
- 实际上文档中每一个元素都是一个对象,利用DOM提供的方法可以得到任意一个对象
- getElementsByTagName方法会返回一个对象数组,数组的元素就是和getElementById差不多的获取到的对象:
- getElementsByClassName方法让我们能够通过class类名来访问元素。它的返回值和getElementsByTagName类似,都是返回一个对象数组
获取和设置属性
- getAttribute
- setAttribute
- element.childNodes获取一个元素的所有子元素
- parentNode,获取当前节点的父节点元素,如果指定节点没有父元素那么会返回null
- nodeType, 每个节点都有nodeType属性,这个属性是一个数值,让我们可以知道正在处理哪种类型的节点
元素节点的nodeType属性值是1
属性节点的nodeType属性值是2
文本节点的nodeType属性值是3
- nodeValue,如果想改变文本节点的值,就可以使用这个属性
动态创建
js也可以用来改变网页的结构和内容,可以通过创建新元素和改变现有元素来改变网页结构
传统方法
- document.write()方法可以方便快捷的把字符串插入到文档中
- innerHTML属性可以用来读写html的内容
DOM操作法
- createElement,创建一个元素节点,传入的参数就是标签名字符串
- createTextNode,创建一个文本节点用于放文本内容
- appendChild,想把新创建的节点插入节点树的最简单办法之一,让它成为某个节点的一个子节点。
- insertBefore,这个方法可以在已有元素前插入一个新元素