javascript
  • html
  • dom
  • 2014-10-30 111 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

    相關問題