DOM对象控制HTML元素

Web前端 来源:Jenny_GO 20℃ 0评论

以下内容,摘自慕课网

将HTML代码分解为DOM节点层次图:


 

节点属性

在文档对象模型(DOM)中,每个节点都是一个对象。DOM节点有三个重要的属性:

nodeName:节点的名称

nodeValue:节点的值

nodeType:节点的类型

一、nodeName属性:节点的名称,是只读的。

元素节点的nodeName与标签名相同

属性节点的nodeName是属性的名称

文本节点的nodeName永远是#text

文档节点的nodeName永远是#document

二、nodeValue属性:节点的值

元素节点的nodeValue是unfined或null

文本节点的nodeValue是文本自身

属性节点的nodeValue是属性本身

三、nodeType属性:节点的类型,是只读的。以下常用的几种节点类型:

元素类型  节点类型

元素1

属性2

文本3

注释8

文档9

注意:节点之间的空白符,在大多浏览器中是文本节点。

访问子节点childNodes

访问选定元素点下的所有子节点的元素,返回的值可以看作是一个数组,他具有length属性。

语法:

elementNode.childNodes;

注意:

如果选定的节点没有子节点,则该属性返回不包含节点的NodeList.

例子:


 

1.什么是节点?

在 HTML DOM 中,所有事物都是节点。DOM 是被视为节点树的 HTML。

整个文档是一个文档节点, 每个HTML元素时元素节点 ,每个HTML属性是属性节点, HTML里面的文本是文本节点 ,注释是注释节点

 

2.其中x=document.getElementsByTagName("div")[0].childNodes是什么意思?

答:获得第一个div元素的子节点,如果换成[1]表示获得第二个div的子节点,并且如果只有一个div元素时获得子节点时必须带 [0] 没有默认。 

访问子节点的第一和最后项

一、firstChild属性返回"childNodes"数组的第一个子节点。如果选定的节点没有子节点,则该属性返回NULL.

语法:   node.firstChild

说明:与elementNode.childNodes[0]是同样的效果。

二、lastChild属性返回"childNodes"数组的最后一个子节点。如果选定的节点没有子节点,则该属性返回NULL.

语法:node.lastChild

说明:与elementNode.childNodes[elementNode.childNodes.length-1]是同样的效果。

访问父节点parentNode

获取指定节点的父节点

语法:   elementNode.parentNode

注意:    父节点只能有一个。

例子(获取父节点):


 

访问祖节点:


 

访问兄弟节点

1.nextSibling属性可返回某个节点之后紧跟的节点(处于同一树层级中)。

语法:nodeObject.nextSibling

说明:如果无此节点,则该属性返回null.

2.previousSibling属性可返回某个节点之前紧跟的节点(处于同一树层级中)。

语法:nodeObject.previousSibling

说明:如果无此节点,则该属性返回null.

跳过空白文本的方法:


 

插入节点appendChild()

在指定节点的最后一个子节点列表之后添加一个新的子节点。

语法:   appendChild(newnode)

参数:newnode:指定追加的节点。

创建新的P标签:


 

插入节点insertBefore()

insertBefore()方法可在已有的子节点前插入一个新的子节点。

语法:   insertBefore(newnode,node);

参数: newnode:要插入的新节点       node:指定此节点前插入节点。 

例子:


 

删除节点removeChild()

removeChild()方法从子节点列表中删除某个节点。如果删除成功,此方法可返回被删除的节点,如失败,则返回NULL.

语法:   nodeObject.removeChild(node)

参数:     node:必需,指定需要删除的节点

例子:


 

注意:把删除的子节点赋值给x,这个子节点不在DOM树中,但是还存在内存中,可通过x操作。

如果要完全删除对象,给x复制null值,代码如下:


 

替换元素节点replaceChild()

replaceChild实现子节点(对象)的替换。返回被替换对象的引用。

语法:   node.replaceChild(newnode,oldnode)

参数:

newnode:必需,用于替换oldnode的对象。

oldnode:必需,被newnode替换。

例子:


 

注意:当oldnode被替换时,所有与之相关的属性内容都将被移除。newnode必须先被建立。

创建元素节点createElement

createElement()方法可创建元素节点。此方法可返回一个Element对象。

语法:    document.createElement(tagName)

参数:   tagName:字符串值,这个字符串用来指明创建元素的类型

注意:    要与appendChild()或insertBefore()方法联合使用,将元素显示在页面中

创建一个按钮:


 

用setAttribute设置属性:


 

创建文本节点createTextNode

createTextNode()方法创建新的文本节点,返回新创建的Text节点。

语法:   document.createTextNode(data)

参数:     data:字符串值,可规定此节点的文本。

例子:


 

网页减去的距离与偏移量

图示:


 

scrollLeft:设置或获取位于给定对象左边界与窗口中目前可见内容的最左端之间的距离 ,即左边灰色的内容。

scrollTop:设置或获取位于对象最顶端与窗口中可见内容的最顶端之间的距离 ,即上边灰色的内容。

offsetLeft:获取指定对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置 。

offsetTop:获取指定对象相对于版面或由 offsetParent 属性指定的父坐标的计算顶端位置 。

注意:

1. 区分大小写

2. offsetParent:布局中设置postion属性(Relative、Absolute、fixed)的父容器,从最近的父节点开始,一层层向上找,直到HTML的body。