Element.value 和 Element.getAttribute("value") 的区别

IT技术 javascript html dom
2021-02-24 01:56:54

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

2个回答

不同之处在于这element.value是实时的,如果用户更改了文本框输入,它会反映出来,并向您显示新值。

虽然getAttribute('value')仍会显示原始value="whateverWasHere"值。

jsFiddle 演示

快速问题@Mark ...为什么如果我Element.attributes在一个input元素上做,它基本上代表描述有关该属性的任何信息的键/值对字符串,我看不到该value属性(存储实际值这是input包含)......它给了我一个NamedNodeMap物体基本上包含一些属性,但不是value属性,其持有的实际值。但是,如果我做一些类似的事情,thatInput.value我可以看到value。为什么value不在对象attributes属性中Element
2021-04-16 01:56:54
是否value=""存在于元素本身?如果尚未在列表中指定它,它就不会出现在列表中(我相信),这可能就是它没有出现的原因!但例如,如果我document.querySelector('#test').attributes.value看到value=""一个空白的新输入文本框@MariusMucenicu
2021-04-29 01:56:54
这解释了我看到的行为。谢谢 :)
2021-05-07 01:56:54

.value 不映射到任何属性。

.defaultValue映射到"value"属性。所以当你说elem.getAttribute("value")这与elem.defaultValue.

此外,.defaultValue反映.value何时未触及输入(脏值标志为 false)。在用户交互更改输入值后,此映射将停止。当输入保持不变时,您可以更改.defaultValue(因此.setAttribute("value"))并看到它也发生了变化.value并不是说这实际上很有用,但仍然是有趣的琐事。

@ama2 我的观点是这.value与 attribute 不同"value",但是.defaultValue这就是原因,它有点不直观。请考虑jsfiddle.net/J9Mat/2
2021-05-15 01:56:54