EdmondFrank's 时光足迹

この先は暗い夜道だけかもしれない それでも信じて進むんだ。星がその道を少しでも照らしてくれるのを。
或许前路永夜,即便如此我也要前进,因为星光即使微弱也会我为照亮前途。
——《四月は君の嘘》

JavaScript-DOM学习笔记

JavaScript DOM对象学习笔记

节点属性

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

(1) nodeName:节点名称,相当于tagName属性节点返回属性名,文本节点返回#text.

1.元素节点的nodeName与标签名相同
2.属性节点的nodeName是属性的名称
3.文本节点的nodeName永远是#text
4.文档节点的nodeName永远是#document

(注:nodeName,是只读的)

(2) noType:节点类型 => 返回值:

返回值为
1,元素节点;
2,属性节点;
3,文本节点;
8,注释;
9.文档;

(注:nodeType,也是只读的)

(3) nodeValue:节点的值,返回一个字符串,表示这个节点的值.元素节点返回null,属性节点返回属性值,文本节点返回文本.

1.元素节点的nodeValue是undefined或null
2.文本节点的nodeValue是文本自身
3.属性节点的nodeValue是属性的值

(nodeValue除了对元素节点不能写外,可读可写,但一般只用于设置文本节点的值)

元素内容

我们有两种方法替换元素的内容,一个是innerHTML,另一个是innerText

  • innerHTML属性用于获取或替换元素的内容.
  • innerText属性用于获取或替换元素的文本内容,只有文本内容,没有其它HTML标签.

使用语法

Object.innerHTML Object.innerText

(Object 是获取的元素对象,如通过document.getElementById(“ID”)获取的元素)

innerHTML 和 innerText 都是既可读又可写的,他们既可以直接输出值或赋值给变量.

eg:

1
2
alert(Object.innerHTML)
var ostr = Object.innerHTML

元素样式

1.style的使用语法:

Object.style.property = new style;

(property为css样式属性,比如 color,width等等)

2.className属性可以设置或返回元素的class 属性

Object.className = classname;

(className为元素的class属性)

遍历节点树

父子节点

可以使用childNodes对象访问选定元素节点下的所有子节点的列表,返回的值可以看作是一个数组,他具有length属性。如果选定的节点没有子节点,则该属性返回不包含节点的 NodeList.

elementNode.childNodes

有子节点,相应的,就有父亲节点. parentNode可获取指定节点的父节点

elementNode.parentNode

(注意:父节点只能有一个)

兄弟节点

在 DOM 树形结构中,除了父子关系属性外,还有同辈关系属性. 同辈关系中,也分为两种,一种是向前的同辈关系 previousSibling,另一种是向后的同辈关系nextSibling (注:两个属性获取的是节点,所以我们可以先判断节点nodeType是否为1,如不为元素节点,跳过)

创建节点

创建元素

document.createElement(tagName);

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

(注意:createElement()方法只是创建元素,并不会自动出现在文档中,如果想显示在浏览器中,还需要与appendChild() 或 insertBefore()方法联合使用)

创建文本节点

document.createTextNode(str);

str,为字符串值,可规定此节点文本.

添加与删除节点

nodeObject.appendChild(newnode);

nodeObject:父节点;newnode指定追加的节点.

nodeObject.removeChild(node);

参数意义同上.

(注:把删除的子节点赋值给rm,这个子节点不在 DOM 树中,但是还存在内存中,如果要完全删除对象,需给rm赋null值)

指定位置插入字节点

fnode.insertBefore(newnode,node);

参数说明:

newnode:必需,表示需要插入的新节点
node:可选,在其之前插入新节点的子节点,默认为末尾插入
返回值:插入的节点

子节点的替换

fnode.replaceChild(newnode,oldnode);

参数说明:

newnode:用于替换的新节点
oldnode:被newnode替换的节点
返回值:被替换的节点