JavaScript中的Element.value与Element.getAttribute("value")有何区别?

9

我最近开始学习JavaScript,但有一些东西让我困惑:

Element.valueElement.getAttribute("value")有什么区别?

实际上我的问题是,当我尝试复制一个typetextinput元素的值到另一个元素时,如果我使用第一个方法(Element.value),它可以正常工作,但如果我使用第二个方法,它会复制给元素的第一个值,并且当我更改textbox中的文本时它永远不会得到更新,这个行为对我来说看起来很奇怪!你们能否解释一下这里发生了什么?

<html>
<head>
    <meta charset="utf-8">
    <title>Hello JavaScript</title>
    <script src="script2.js"></script>
</head>
<body>
    <input id="Text1" type="text" />
    <input id="Button1" type="button" value="button" />
    <input id="Text2" type="text" />
</body>
</html>

JavaScript文件:
var myButton;

window.onload = function () {

    myButton = document.getElementById("Button1");
    myButton.onclick = function () {
        var val = document.getElementById("Text1").getAttribute("value");  
        //var val = document.getElementById("Text1").value;
        document.getElementById("Text2").setAttribute("value", val);
    };

};
2个回答

12

区别在于element.value是实时的,如果用户更改了文本框输入等内容,它将反映出来并显示新的值。

getAttribute('value')仍然显示原始的value =“whateverWasHere”值。

jsFiddle演示


更多细节请参见 https://dev59.com/ZWct5IYBdhLWcg3wmOdO - Naveen Kumar Alone

2
value属性的值是在编写HTML时设置的。
读取此属性的值后,将用于填充元素的value属性
当用户或大多数JavaScript函数更改值时,该属性是您使用Element.value获取的。通过界面更改值时,不会更改属性
简而言之,您几乎总是要使用Element.value,而几乎从不使用Element.getAttribute("value")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接