我想知道如何实现以下功能。
我有一个全局变量,当文本框获得焦点时,它会被分配一个值。我希望能够在事件之外访问这个新值以供以后使用,但显然通过以下实现,该值变得未定义。有没有办法克服这个问题?
var globalVar;
$('.inputIdentifier').on('focus', function() {
globalVar = $(this).attr('data-val');
console.log(globalVar);
});
//access the value in globalVar outside the function?
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" class="inputIdentifier" data-val="myData" />
谢谢。
.inputIdentifier
的值仅在获得焦点时才分配给globalVar
。下面的代码focus
在用户关注输入之前运行,因此您的globalVar
仍将未定义。您将从我在下面添加的console.log
中看到这一点。您可以在focus
中调用另一个函数并将globalVar
作为参数传递吗?
var globalVar;
$('.inputIdentifier').on('focus', function() {
globalVar = $(this).attr('data-val');
console.log('globalVar on focus', globalVar);
doSomething(globalVar);
});
//You will not get the value of $(this).attr('data-val') here. globalVar only gets set when the onFocus of .inputIdentifier
console.log('globalVar on initial run', globalVar);
function doSomething(globalVar){
console.log('globalVar in doSomething', globalVar);
}
在您编写的代码中,只有当您'focus'
输入时,它才具有值。 因此,在用户不关注输入之前,变量undefined
. 该问题仅在用户从未'focus'
输入的第一次时才可用 直到现在。 最好使用if statement
或hasfocus
函数在其他函数中检查它,即使用变量或对变量使用初始值。