Javascript JS-在变量中保存DOM元素

Javascript JS-在变量中保存DOM元素,javascript,html,Javascript,Html,我需要一些澄清,因为我已经把自己弄糊涂了。假设我们有以下代码: var textarea = document.getElementById("myTextarea"); var button = document.getElementById("myButton"); button.addEventListener("click", function() { var words = textarea.value; console.log(words); } 此代码首先将DOM元素(

我需要一些澄清,因为我已经把自己弄糊涂了。假设我们有以下代码:

var textarea = document.getElementById("myTextarea");
var button = document.getElementById("myButton");

button.addEventListener("click", function() {
    var words = textarea.value;
console.log(words);
}
此代码首先将DOM元素(按钮和textarea)收集到各自的变量中。在代码的后面,当按下按钮时,
textarea.value
被放入变量
words
。够公平吧

我的问题是为什么没有任何东西登录到控制台?textarea变量是在页面加载后从DOM中创建和存储的,用户在有时间将任何内容写入textarea之前按此键。这意味着
textarea.value
应等于
'
(无),而不是用户按下按钮时textarea中的字符串

如果有人能为我澄清此事,我将不胜感激

谢谢:)

这意味着
textarea.value
应等于
'
(无),而不是用户按下按钮时textarea中的字符串

输入元素的
属性根据用户输入或更改它的其他代码动态更新。当您访问
属性时,它很重要。因为您在单击按钮时访问它,所以在单击按钮时会读取元素上设置的值

然而,如果你做了这样的事情:

var textarea = document.getElementById("myTextarea");
var words = document.getElementById("myButton").value;

button.addEventListener("click", function() {
    console.log(words);
}

然后该值将被更早地读取(可能为空,但可能是默认值、自动保存变量或其他它设置为更早的值),并且用户所做的更改将被忽略。

查看这两个jsfiddle

<input id = "myTextarea"/>
<button id= "myButton" type="submit"> test </button>
var textarea = document.getElementById("myTextarea");
var button = document.getElementById("myButton");
button.addEventListener("click", function() {
    var words = textarea.value;
    console.log(words);
});

试验
var textarea=document.getElementById(“myTextarea”);
var button=document.getElementById(“myButton”);
addEventListener(“单击”,函数(){
var words=textarea.value;
控制台日志(文字);
});
在一个示例中,您捕获了on click事件中文本区域的值。因此,您将获得已输入的值

<input id = "myTextarea"/>
<button id= "myButton" type="submit"> test </button>
var textarea = document.getElementById("myTextarea");
var button = document.getElementById("myButton");
button.addEventListener("click", function() {
    console.log(words);
});

试验
var textarea=document.getElementById(“myTextarea”);
var button=document.getElementById(“myButton”);
addEventListener(“单击”,函数(){
控制台日志(文字);
});
在fiddle中,只要加载DOM,就可以捕获值,而不必等待click事件发生。因此,控制台中打印的值为空


因此,您将看到输入的值还是什么都看不到,这取决于您何时捕获值、事件发生后还是加载DOM之后。希望这能有所帮助。

当您单击按钮而不键入任何内容时会发生什么?它没有记录到控制台吗?@MunamYousuf当按下按钮时,它会记录一些技术上的东西,这是一个空值(
“”
)。因此,尽管我们没有看到任何东西,但将某些内容记录到控制台的操作仍然会发生