Ubah nilai node XML DOM
nodeValue
Atribut digunakan untuk mengubah nilai node.
setAttribute()
Metode digunakan untuk mengubah nilai atribut.
Ubah nilai elemen
Di DOM, segalanya adalah node. Node elemen tidak memiliki nilai teks.
元素节点的文本值存储在子节点中。该节点被称为文本节点。
如需更改元素的文本值,必须更改元素的文本节点的值。
改变文本节点的值
nodeValue
属性可用于更改文本节点的值。
下面的代码更改第一个 <title> 元素的文本节点值:
例子 1
xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue = "潮菜天下"
例子解释:
- 假设 books.xml 被加载到
xmlDoc
中 - 获取 <title> 元素的第一个子节点
- 把此文本节点的节点值更改为 "潮菜天下"
例子 2
循环并更改所有 <title> 元素的文本节点:
for (i = 0; i < x.length; i++) { x[i].childNodes[0].nodeValue = "已更改的文本"; }
改变属性的值
在 DOM 中,属性也是节点。与元素节点不同的是,属性节点拥有文本值。
更改属性值的方法是更改其文本值。
可以通过使用 setAttribute()
方法或属性节点的 nodeValue
属性来完成这个任务。
使用 setAttribute() 改变属性
setAttribute()
方法设置已有属性的值,或创建新属性。
setAttribute()
方法可更改属性的值。如果该属性不存在,则创建一个新属性。
这段代码更改 <book> 元素的 category 属性:
例子 1
xmlDoc.getElementsByTagName("book")[0].setAttribute("category","烹饪");
例子解释:
- 假设 books.xml 已被加载到
xmlDoc
中 - 获取第一个 <book> 元素
- 将 "category" 属性的值更改为 "烹饪"
例子 2
循环遍历所有 <title> 元素并添加新属性:
x = xmlDoc.getElementsByTagName('title'); for (i = 0; i < x.length; i++) { x[i].setAttribute("edition","第一版"); }
注意:如果该属性不存在,则会创建一个新属性(带有指定的名称和值)。
使用 nodeValue 改变属性
nodeValue
属性是属性节点的值。
更改 nodeValue
属性可更改属性的值。
实例
xmlDoc.getElementsByTagName("book")[0].getAttributeNode("category").nodeValue = "烹饪";
例子解释:
- 假设 books.xml 已被加载到
xmlDoc
中 - 获取第一个 <book> 元素的 "category" 属性
- 将属性节点的值更改为 "烹饪"