Java Script中的getAttribute(attr)方法返回属性的先前值

Sho*_*ate 2 html javascript dom

无法理解为什么elem.getAttribute("someAttribute")不返回更新的值.

<body>
  <input type="text" value="previousValue">
  <script>
    var input = document.body.children[0]
 
    input.value = 'newValue'
 
    alert(input.getAttribute('value')) // 'previousValue', not changed!
  </script>
</body>
Run Code Online (Sandbox Code Playgroud)

有谁能解释一下?

T.J*_*der 5

虽然元素实例上的某些属性确实是属性的直接反射(例如,rel属性直接反映了元素的rel属性link,并且className直接反映了class属性),但情况并非总是如此.

value属性不是该属性的直接反映value.它从属性中获取其初始值,但设置它不会影响属性(通过属性getAttributedefaultValue属性仍然可用).(还有其他不是直接反射; 元素href上的属性a为您提供绝对路径,但href 属性可能是相对路径.)

如果要设置属性,请使用setAttribute.(并仔细测试您想要支持的任何IE版本,因为Microsoft有过这样的错误.)

  • @ShoaibChikate这里是TJ的另一篇优秀文章,它更深入地解释了HTML属性与DOM属性:http://stackoverflow.com/a/5884994/1331430,这里是对这种特定行为的更多技术性解释:http:// stackoverflow. COM/A /一百三十三万一千四百三十零分之一千一百七十七万九千四百二十六 (2认同)