理解DOM的基本使用 | 8月更文挑战

116 阅读3分钟

这是我参与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个节点

\