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

getAttribute(attr) method in Java Script returning previous value of attribute

本文关键字:属性 返回 方法 attr 脚本 getAttribute Java      更新时间:2023-09-26

无法理解为什么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>

谁能解释一下?

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

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

如果要设置该属性,请使用 setAttribute 。(并在您要支持的任何IE版本上仔细测试,因为Microsoft有出错的历史。

试试这个,它正在工作:

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

我们可以通过两种类型访问 JS 中的对象

input.value or input[value]

所以你必须使用第二个

    <body>
  <input type="text" value="previousValue">
  <script>
    var input = document.body.children[0]
 
    input[value] = 'newValue'
 
    alert(input.getAttribute('value')) // Now Changed
  </script>
</body>