如何解决为什么我的 addEventListener 函数在本地为变量赋值,而不是全局赋值?
我正在尝试用 Javascript、HTML 和 CSS 编写一个应用程序,在其中我通过输入字段从用户那里获取信息,并将其保存到稍后要使用的变量中。我在脚本的开头分配了空的全局变量,然后应该在事件侦听器函数运行时重新分配。通过从函数内部和外部登录到控制台,我可以看到用户输入被分配给函数内的变量,而不是函数外。
示例代码:
let inputName;
const person = document.getElementById('person');
function getName() {
inputName = person.value;
//if console.log(inputName) is here,the assigned value for inputName will be logged to the console
};
person.addEventListener('change',getName);
//if console.log(inputName) is anywhere outside of getName(),the value will not appear on the console
加上相应的 HTML:
<div>
<label for='person'>What is your name?</label>
<br>
<input type='text' id='person' placeholder='John Doe' required>
</div>
我已经尝试了各种变体,但仍然没有找到解决方案;关于如何修复/重写此问题的任何想法?
解决方法
好的,我想通了。出于尴尬,我很想删除线程,但会保持下去,因为我想我不是唯一一个被这种事情蒙蔽了双眼的新手......
简而言之,最近才开始使用事件侦听器,我忽略了脚本的运行速度比我在输入字段中输入名称要快得多,因此会运行 console.log()早于我希望运行事件侦听器函数来分配值,无论我在哪里键入 console.log() ... Facepalm!无论如何,它看起来像是@JakeAve 调用的 - 我肯定会记得在将来使用 setTimeOut() 来解决此类问题,这是一个巧妙的策略。
感谢大家抽出时间提供帮助 - 非常感谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。