JavaScript 匿名函数作用域变量

标签 javascript html dom queryselector

我是 JS 的初学者,现在正在学习 DOM 操作。我正在尝试创建一个事件处理程序,将输入字符串打印到控制台(例如)。

当我尝试执行此操作时,处理程序的匿名函数将无法识别该变量:

var testThis = document.querySelector('.testInput').value;

document.querySelector('button[id="first"]').addEventListener('click', function() {
    console.log(testThis); //won't pass the Input to the console
})

但是当我在函数本身中声明变量时,一切正常。

所以我的问题是:该函数是否应该有权访问全局范围?

谢谢!

最佳答案

testThis 将具有第一行代码运行时的输入值。如果有人更改输入的值,然后单击该按钮,该变量仍将具有旧值。

解决方案:将输入元素本身存储在变量中,并在事件处理程序中检索其值:

var testInput = document.querySelector('.testInput');

document.querySelector('button[id="first"]').addEventListener('click', function() {
    console.log(testInput.value);
})
<input type="text" class="testInput" />
<button id="first">Click Me</button>

关于JavaScript 匿名函数作用域变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58999174/

相关文章:

javascript - xkcd 是如何做 xk3d 的?

javascript - TinyMCE 用另一个(新的)元素包裹元素

javascript - 以正确的方式提取 HTML

javascript - DCjs 光标和工具提示

JavaScript 检查多次上传的文件扩展名

javascript - 获取计算的直方图 bin 阈值

html - 使用 FOR XML PATH 在 SQL Server 中格式化颜色

javascript - 检查 DOM 中是否存在现有 jQuery 对象(不是选择器)

jquery - 如何将数字更改为 JQUERY 图像 slider 上的图像

javascript - 如何在 node.js 中通过 XPath 更改带有 xmldom 的 DOM?