javascript
  • html
  • dom
  • 2014-10-30 45 views 1 likes 
    1

    无法得到为什么elem.getAttribute(“someAttribute”)不返回更新的值。Java Script中的getAttribute(attr)方法返回属性的以前值

    <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>

    任何人都可以解释一下吗?

    回答

    5

    虽然这是事实,一些在元素实例的属性是属性的直接反射(在rel财产直接反映link元素rel属性,例如,和className直接反映了class属性),但这不是总是的情况。

    value属性不是value属性的直接反映。它从属性获取其初始值值,但将其设置为不影响该属性(通过getAttributedefaultValue属性仍然可用)。 (另外有一些人不是直接反射;在href财产上a元素给你绝对路径,但href属性可能是一个相对路径)

    如果你想设置的属性,使用setAttribute。 (和测试小心你要支持,因为微软已经收到此错误的历史IE的任何版本)

    +0

    得到了清除。谢谢 – 2014-10-30 08:26:14

    +2

    @ShoaibChikate这是TJ的另一个优秀帖子,它更深入地解释了HTML属性与DOM属性:http://stackoverflow.com/a/5884994/1331430以下是对此特定行为的更多技术解释:http:// stackoverflow.com/a/11779426/1331430 – 2014-10-30 09:45:11

    +0

    非常感谢。非常有用的链接 – 2014-10-30 10:12:05

    0

    试试这个,它的工作:

    <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> 
    
    +0

    考虑向你的代码添加解释 – arghtype 2014-10-30 08:43:45

    +0

    尝试和替换代码将使我成为优秀的文档编写者,但不是程序员。因此,通过解释为什么OP的代码不起作用,可以使您的答案更好。 – 2014-10-30 08:48:21

    相关问题