【问题标题】:Difference between Element.value and Element.getAttribute("value")Element.value 和 Element.getAttribute("value") 的区别
【发布时间】:2012-08-12 00:09:26
【问题描述】:

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

【问题讨论】:

标签: javascript html dom


【解决方案1】:

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

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

jsFiddle DEMO

【讨论】:

  • 这解释了我看到的行为。谢谢:)
  • 快速问题@Mark...为什么如果我在input 元素上执行Element.attributes,它基本上表示描述有关该属性的任何信息的字符串的键/值对,我没有看到value 属性(它存储了input 包含的实际值)...它给了我一个NamedNodeMap 对象,它基本上包含一些属性,但不包含value 属性,它包含实际值。但是,如果我执行thatInput.value 之类的操作,我可以看到价值。为什么value 不在Element 对象的attributes 属性中?
  • 元素本身是否存在value=""?如果尚未在列表中指定它,它将不会出现在列表中(我相信),这可能就是它没有出现的原因!但是例如,如果我这样做 document.querySelector('#test').attributes.value 我会看到 value="" 一个空白的新输入文本框 @MariusMucenicu
【解决方案2】:

.value 不映射到任何属性。

.defaultValue 映射到 "value" 属性。所以当你说elem.getAttribute("value") 时,它与elem.defaultValue 相同。

此外,.defaultValue 在输入未被触摸时反映.value (dirty value flag is false)。用户交互更改输入值后,此映射停止。当输入未被改变时,您可以更改.defaultValue(因此.setAttribute("value"))并看到它也更改.value。并不是说这实际上有用但有趣的琐事。

【讨论】:

  • @ama2 我的观点是.value 与属性"value" 不同,但.defaultValue 是。这就是原因,它有点不直观。请考虑jsfiddle.net/J9Mat/2
猜你喜欢
  • 2013-07-03
  • 1970-01-01
  • 2023-03-03
  • 2015-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-16
相关资源
最近更新 更多