Javascript 全局变量不通过函数更改

Javascript 全局变量不通过函数更改,javascript,Javascript,我正在尝试获取一个人当前在keyup上使用的输入框的值和名称,但是当keyup函数运行后,我在更新全局变量方面遇到了问题。他们只是继续说Google Chrome开发者工具中没有定义 我做错了什么 $( document ).ready(function() { var assessName; var assessVal; var impName; var impVal

我正在尝试获取一个人当前在keyup上使用的输入框的值和名称,但是当keyup函数运行后,我在更新全局变量方面遇到了问题。他们只是继续说Google Chrome开发者工具中没有定义

我做错了什么

$( document ).ready(function() {
                var assessName;
                var assessVal;
                var impName;
                var impVal;

                //Get the name and value of the currently selected assessed input
                $('[id^=ass]').on('keyup', function(){
                    assessName = $(this).attr('name').replace('ass-','');
                    assessVal = $(this).val();
                });

                //Get the name and value of the currently selected implemented input
                $('[id^=imp]').on('keyup', function(){
                    impName = $(this).attr('name').replace('imp-','');
                    impVal = $(this).val();             
                });

                console.log(assessName);
                console.log(assessVal);
                console.log(impName);
                console.log(impVal);
            });

这是因为
keyup
事件在您将变量写入控制台后发生更改。JavaScript中的事件是异步的


因此,如果您将您的
console.log
调用放入事件侦听器,它将准确地显示您期望的内容。

$('[id^=imp]')。在('keyup',…)上只注册一个事件侦听器。它不会阻止脚本的执行并等待事件触发。将那些
console.log()
s放入回调函数,它应该可以正常工作。啊!我对它工作原理的理解是错误的,但我现在知道了!今天学到了一些新东西。谢谢大家!@迈克尔-接受答案吗?@PastorBones我要等10分钟才能回答。别担心,我会在计时器用完后这样做。。。