我正在更新文本值,我不确定为什么第一个代码块不起作用,但是替换块会这样做。谁可以给我解释一下这个?它们似乎相当。
//不更新
newAtomicNum = 2;
oldAtomicNum = document.getElementById("atomicNumber").firstChild.nodeValue;
oldAtomicNum = newAtomicNum;
* 与 * //确实更新
newAtomicNum = 2;
oldAtomicNum = document.getElementById("atomicNumber");
oldAtomicNum.firstChild.nodeValue = newAtomicNum;
答案 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
的值是一个对象引用。然后我们在第三行使用该引用,分配给对象的一个属性。