使用 javascript 的 addeventlistener 在单击按钮后更改输入文本的值

Changing value of input text after button click using javascript's addeventlistener

我正在尝试使用 JavaScript 在单击按钮时更改通过文本字段输入的输入文本。我很难弄清楚为什么它不起作用。任何帮助将不胜感激。

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title> </title>

    <script type="text/javascript">


    function start(){
        var button = document.getElementById("button");
        button.addEventListener("click", buttonPressed, false);
    }

    function buttonPressed(){
        var text = document.getElementById("textField").value;
        text.value = "GMU";
    }

    window.addEventListener("load", start, false);

    </script>

    </head>

    <body>
        <form>
            <input id="textField" type="text" value="">
            <input id="button" type="button" value="Button">
        </form>
    </body>
    </html>

问题出在这里:

var text = document.getElementById("textField").value;
text.value = "GMU";

看看上面的几行。您正在获取一个元素的值并将其存储到 text 但您随后尝试分配 text.value?考虑这种情况:

假设 input 当前的值为 "Apples"。正在做:

var text = document.getElementById("textField").value;

将 "Apples" 存储在 text 中。现在你可以:

text.value = "GMU";

由于 text 是一个字符串,而您尝试访问 属性 value ,而字符串不存在,因此它不起作用 - 您已经访问了 value 属性 太多次了。

现在 - 请注意,变量存储 而不是对元素值的引用,这意味着在上面的代码中, text 仅包含 属性 value,它没有指向实际元素的值属性。因此,您需要像这样直接修改值 属性:

document.getElementById("textField").value = "GMU";

之所以可行,是因为您修改了元素本身的 属性,而不是将其复制到变量中。


您也可以将元素存储到变量中,然后执行 element.value = "val" 因为元素是一个对象,而对象具有指向内存的引用,因此当您分配给一个对象时,将分配引用并且它指向内存中的同一个位置。

要更改单击按钮时的输入文本,您可以在按钮上使用 addEventListener。之后就可以更改输入框了。

var button = document.getElementById("button");
var text = document.getElementById("textField");

button.addEventListener('click', function() {
  text.value = "GMU";  
});
<form>
  <input id="textField" type="text" value="">
  <input id="button" type="button" value="Button">
</form>