Javascript Element.value和Element.getAttribute(“value”)之间的差异

Javascript Element.value和Element.getAttribute(“value”)之间的差异,javascript,html,dom,Javascript,Html,Dom,我只是想知道这两者有什么不同。我注意到这两种方法有时会给出不同的结果。区别在于元素.value是实时的,如果用户更改了文本框输入,它会反映出来,并显示新的值 虽然getAttribute('value')仍将显示原始value=“whateverWasHere”值 。值不映射到任何属性 .defaultValue映射到的“value”属性。因此,当您说elem.getAttribute(“value”)时,这与elem.defaultValue相同 此外,.defaultValue在未触及输入时

我只是想知道这两者有什么不同。我注意到这两种方法有时会给出不同的结果。

区别在于
元素.value
是实时的,如果用户更改了文本框输入,它会反映出来,并显示新的值

虽然
getAttribute('value')
仍将显示原始
value=“whateverWasHere”


。值
不映射到任何属性

.defaultValue
映射到
的“value”
属性。因此,当您说
elem.getAttribute(“value”)
时,这与
elem.defaultValue
相同


此外,
.defaultValue
在未触及输入时反映
.value
)。用户交互更改输入值后,此映射停止。当输入未被触动时,您可以更改
.defaultValue
(从而
.setAttribute(“value”)
)并查看它的更改
.value
。这并不是说它实际有用,而是一件有趣的琐事。

While的可能副本指的是set而不是get,这些信息可能会对您有所帮助。@j08691映射到属性的属性总是反映该属性的当前值。@j08691是的,对其进行了很好的总结。这一点的可能重复解释了我看到的行为。谢谢:)快速提问@Mark。。。为什么如果我在一个,比如说,
input
元素上执行
Element.attributes
,它基本上表示描述该属性的任何信息的字符串的键/值对,我就看不到
value
属性(存储该
input
包含的实际值)。。。它给了我一个
NamedNodeMap
对象,其中基本上包含一些属性,但不包含
属性,该属性保存实际值。但是,如果我做类似于
thatInput.value
的操作,我可以看到值。为什么
value
不在
元素
对象的
属性
中?元素本身是否存在
value=”“
?它不会出现在列表中(我相信),如果它还没有被指定在那里,这可能就是它没有出现的原因!但例如,如果我执行
document.querySelector(“#test”).attributes.value
操作,我会看到一个空白的新输入文本框的
value=”“
@MariusMucenicu@ama2我的观点是,
.value
与属性
“value”
不同,但是
.defaultValue
是。这就是原因,它有点不直观。请考虑