在事件期间将值保存到全局 var 中,以供以后使用



我想知道如何实现以下功能。

我有一个全局变量,当文本框获得焦点时,它会被分配一个值。我希望能够在事件之外访问这个新值以供以后使用,但显然通过以下实现,该值变得未定义。有没有办法克服这个问题?

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 statementhasfocus函数在其他函数中检查它,即使用变量或对变量使用初始值。

相关内容

  • 没有找到相关文章

最新更新