了解获取和设置nodeValue

时间:2014-02-08 14:56:30

标签: javascript dom

我正在更新文本值,我不确定为什么第一个代码块不起作用,但是替换块会这样做。谁可以给我解释一下这个?它们似乎相当。

//不更新

newAtomicNum = 2;
oldAtomicNum = document.getElementById("atomicNumber").firstChild.nodeValue;
oldAtomicNum = newAtomicNum;

* * //确实更新

newAtomicNum = 2;
oldAtomicNum = document.getElementById("atomicNumber");
oldAtomicNum.firstChild.nodeValue = newAtomicNum;

2 个答案:

答案 0 :(得分:1)

在没有设置的情况下调用nodeValue时,它返回当前的nodeValue,而不是对属性的引用。

所以元素看起来像

<div id="atomicNumber">test</div>

你打电话的地方

var oldAtomicNum = document.getElementById("atomicNumber").firstChild.nodeValue;

oldAtomicNum现在包含字符串 test,因此将变量设置为其他内容不会更新元素nodeValue

答案 1 :(得分:0)

他们确实非常不同。

在您的第一个示例中,您要更新的是变量oldAtomicNum。这与document.getElementById("atomicNumber").firstChild.nodeValue之间没有持久的联系。分配(=)复制,它不会创建引用。

请注意,这与此非常不同:

newAtomicNum = 2;
atomicNum = document.getElementById("atomicNumber").firstChild;
atomicNum.nodeValue = newAtomicNum;

...更新值。有效的原因是在第二行,我们复制到atomicNum的值是一个对象引用。然后我们在第三行使用该引用,分配给对象的一个​​属性。