DOM
节点及其类型
元素节点
属性节点: 元素的属性, 可以直接通过属性的方式来操作
文本节点: 是元素节点的子节点, 其内容为文本,无子节点
document
在 html 什么位置写 js
直接在 html 页面中书写代码
缺点:
js 和 html 强耦合, 不利于代码的维护
若 click 相应函数是比较复杂的, 则需要先定义一个函数, 然后再在 onclick 属性中完成对函数的引用, 比较麻烦
在整个 html 文档的最后编写类似代码
在 body 节点之前编写 js 代码, 需用 window.onload 事件,该事件在当前文档完全加载之后被触发, 所以其中的代码可以获取到当前文档的任何节点
获取元素节点
document.getElementById: 根据 id 属性获取对应的单个节点
document.getElementsByTagName
document.getElementsByName() (不通用)
document.getElementsByClassName()(不通用)
document.getElementsByTagNameNS()(不通用)
document.querySelector("#id")
获取属性节点
可以直接通过 Node.id 这样的方式来获取和设置属性节点的值
可以直接通过getAttribute/setAttribute/removeAttribute这样的方式来获取和设置属性节点的值
通过元素节点的 getAttributeNode 方法来获取属性节点,然后在通过 nodeValue 来读写属性值
获取元素节点的子节点(只有元素节点才有子节点)
childNodes不实用,会取到文本节点, 但该方法不实用. 因为如果要获取指定的节点 的指定子节点的集合, 可以直接调用元素节点的getElementsByTagName()方法来获取一组相同tagName的子节点
children 实用,会剔除文本节点
firstChild 会受到文本子节点的影响,我们通常可以使用firstChild的nodeValue属性来获取文本值(当子节点只有文本节点时)
lastchild 会受到文本子节点的影响
获取文本节点
步骤: 元素节点 --> 获取元素节点的子节点
若元素节点只有文本节点一个子节点,若元素节点只有文本节点一个子节点, 可以先获取到指定的元素节点 eleNode, 然后利用 eleNode.firstChild.nodeValue 的方法来读写其文本节点的值
节点的属性
nodeName: 代表当前节点的名字. 只读属性.
nodeType:返回一个整数, 这个数值代表着给定节点的类型. (1 -- 元素节点, 2 -- 属性节点, 3 -- 文本节点)
nodeValue返回给定节点的当前值(字符串). 可读写的属性
元素节点, 返回值是 null
属性节点: 返回值是这个属性的值
文本节点: 返回值是这个文本节点的内容
API
createElement
createTextNode
appendChild
节点的替换
replaceChild(): 把一个给定父元素里的一个子节点替换为另外一个子节点
let reference = element.replaceChild(newChild,oldChild)
该节点除了替换功能以外还有移动的功能
该方法只能完成单向替换, 若需要使用双向替换, 需要自定义函数
插入节点
insertBefore(): 把一个给定节点插入到一个给定元素节点的给定子节点的前面
自定义 insertAfter()
删除节点(removeChild()) let reference = element.removeChild(node)
let reference = element.removeChild(node)
innerHTML属性(浏览器几乎都支持该属性)
其它属性,参看 API:nsextSibling,previousSibling等
Last updated