DOM编程
主要掌握节点的使用以及一些方法。
DOM把文档表示为一棵家谱树。如图
非常重要的一点:事实上文档里几乎每一样东西都是一个节点,空格、换行符都会被解释成节点,所以有时候元素的第一个子元素用firstChild得不到。
节点类型 | nodeName | nodeType | nodeValue |
元素 | 元素名称 | 1 | null |
属性 | 属性名称 | 2 | 属性值 |
文本 | #text | 3 | 文本内容(不包含html) |
属性 | 说明 |
childNodes | 获取当前元素节点的所有子节点 |
firstChild | 获取当前元素节点的第一个子节点 |
lastChild | 获取当前元素节点的最后一个子节点 |
ownerDocument | 获取该节点的文档根节点,相当于Document |
parentNode | 获取当前节点的父节点 |
previousSibling | 获取当前节点的前一个同级节点 |
nextSibling | 获取当前节点的后一个同级节点 |
attributes | 获取当前元素节点的所有属性节点集合 |
方法 | 说明 |
getElementById() | 获取特定ID的节点 |
getElementsByTagName() | 获取相同元素的节点列表 |
getElementsByName() | 获取相同名称的节点列表 |
getAttribute() | 获取特定元素节点的属性值 |
setAttribute() | 设置特定元素节点的属性值 |
removeAttribute() | 移除特定元素节点属性 |
方法 | 说明 |
write() | 这个方法可以把任意字符串插入到文档中 |
createElement() | 创建一个元素节点 |
appendChild() | 将新节点追加到子节点列表的末尾 |
createTextNode() | 创建一个文件节点 |
insertBefore() | 将新节点插入在前面 |
replaceChild() | 用新节点替换旧节点 |
cloneNode() | 节 |
removeChild() | 移除节点 |
三大节点:元素节点,文本节点,属性节点
节点属性:
获取文本节点的值如p span h……时要用xxx.firstchild.nodeValue得到
元素节点如input直接使用value获取值
常用方法:
创建节点:createElement,createTextNode
插入:元素.innerHTML,appendChild,元素.parentNode.insertBefore(a,b)a
插入b前面。
删除:元素.removeChild(child)
关于removeChild函数需要注意的是:每remove掉一个对象后,第一个对象是去掉了,原来的document.getElementsByName()得到的集合中的第二个对象变成了第一个,length也-1。以后再通过循环使用removeChild时应该通过foreach来判断循环次数,这样就不会出错了。如果使用for的话,则每次都删第一个。
查找:getElementById,getElementsByTagName,getAttribute
替换:replaceChild(a,b)a替换成b
innerHTML和createTextNode的区别有:innerHTML里输入< p>等标签会被翻译成html语言,而textnode会直接写成< p>