这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战
什么是DOM
DOM,英文是Document Object Model,中文名叫文档对象模型。
DOM定义了表示和修改文档所需的方法,这些方法可以用来更方便的操作html和xml以及间接的操作CSS。有人称DOM是html以及xml的标准编程接口。
通过 HTML DOM,可访问 JavaScript HTML 文档的所有元素。
当网页被加载时,浏览器会创建页面的文档对象模型。
DOM元素的增删改查
1.查找元素
(1)通过document查找元素(代表整个文档的对象)
通过ID获取:document.getElementById() //IE8及以下不兼容
通过标签名:document.getElementsByTagName()
通过标签中的name属性:document.getElementsByName() //只有部分标签可生效,比如:表单、img、iframe
通过类名:document.getElementsByClassname() //IE8及以下不兼容
通过CSS选择器:document.querySelector()和document.querySelectorAll(); //IE8以下不兼容,而且是非实时的。
(2)遍历节点树(兼容性都很好)
parentNode //获取已知节点的父节点,最顶端为#document
childNodes //获取子节点们
firstChild //获取首个、第一个子节点
lastChild //最后一个子节点
nextSibling //下一个兄弟节点
previousSibling //前一个、上一个兄弟节点
*节点们有一个常用的方法:
hasChildNodes(),判断节点下还有没有子节点,有返回true,没有返回false
*节点的4个属性
nodeName 节点名,返回以大写形式表示,只能读。
nodeValue 节点值,text节点或者comment节点的文本内容,即部分节点才有。可读可写。
nodeType 节点类型,只能读
attribute 元素节点的属性集合
*节点类型
节点有6种类型,对应有6个值,即每个值对应一个类型
元素节点:1
属性节点:2
文本节点:3
注释节点:8
document:9
DocumentFragment:11
(3)基于当前元素节点的遍历
parentElement //当前元素的父元素节点,注IE8及以下不兼容;
children //当前元素的子元素节点,都兼容了;
firstElementChild //第一个子元素节点,IE8及以下不兼容;
lastElementChild //最后一个子元素节点,IE8及以下不兼容;
nextElementSibling //下一个兄弟元素节点,IE8及以下不兼容;
previousElementSibling //前一个兄弟元素节点,IE8及以下不兼容;
2.新增
创建节点
document.createElement() //创建元素节点
document.createTextNode() //创建文本节点
document.createComment() //创建注释节点
document.createDocumentFragment()
document.createAttribute() //创建属性节点
插入节点
appendChild()
向节点的子节点列表的末尾添加新的子节点
insertBefore(a,b)
第一个参数表示:要添加的新节点
第二个参数表示:已知子节点
insert a before b,即插入要添加的新节点a在已知节点b前面。
删除节点
removeChild();
移除指定的子节点,相当于剪切出去。
remove()
移除,相当于销毁整个节点
替换节点
parent.replaceChild(new,origin)
将某一个子节点替换为另一个,
第一个参数:要插入的新元素
第二个:将要被替换的老元素
复制节点
cloneNode(true/false)
当参数为true:复制当天节点及其所以子节点
当参数为false:仅复制当天节点,不复制子节点。
元素节点的常用属性和方法
属性
innerHTML
能获取或设置元素节点里面的HTML内容
innerText
能获取或设置元素节点里面的文本值,火狐不兼容,
火狐用textContent,但是textContent老版的IE不好使。
方法:
getAttribute(属性名)
获取指定属性名对应的属性
setAttribute(属性名,属性值)
创建或者改变元素节点对应的属性
removeAttribute(属性名)
删除元素中指定属性
文本节点相关操作
insertData(offset,string)
从offset指定的位置插入string
appendData(string)
将string追加到文本节点的末尾处
deleteData(offset,count)
从offset位置开始删除count个字符
replaceData(off,count,string)
从off开始将count个字符用string替代
splitData(offset)
从offset位置开始将文本节点分成两个节点
subString(offset,count)
返回offset位置开始的count个节点
\