我对这个论坛和jquery也相对较新。如果我的问题是错误的,请求不要标记negetive incase。
我曾尝试搜索,但仍然无法为我的问题找到合适的解决方案。
我正在使用更改功能获取更新的输出值,如下所示,这非常正常。我还能够使用下面提到的范围内的更新值来警告变量。
$(document).ready(function(){
$("#tags").on("keyup", function() {
var myVar = $(this).val();
alert(myVar);
});
});
现在我想提醒范围之外的变量myVar,如下所示,这不起作用,我不知道如何从给定范围内调用此变量。请帮忙。
$(document).ready(function(){
$("#tags").on("keyup", function() {
var myVar = $(this).val();
});
alert(myVar);
});
答案 0 :(得分:0)
如果您尝试在范围之外提醒它,它将变为空白,因为它将在页面加载时触发
相反,我认为你想在一些事件监听器中调用它,因为这就是你试图将它分配给它之外的变量的原因
$(document).ready(function(){
var myVar = '';
$("#tags").keyup(function() {
myVar = $(this).val();
alert(myVar);
});
//or another event listener {
alert(myVar);
});
});
答案 1 :(得分:0)
您需要将myVar
存储在可以由调用alert
的函数读取的范围内。大锤方法是将myVar
置于全局范围内,如下所示:
$(document).ready(function(){
$("#tags").on("keyup", function() {
myVar = $(this).val(); //notice no var keyword
});
});
当使用变量而不用var
声明它时,它最终会在全局范围内 - 从技术上讲,它成为当前窗口的属性。如果你想要明确,你可以把它写成
$(document).ready(function(){
$("#tags").on("keyup", function() {
window.myVar = $(this).val(); //notice no var keyword
});
});
现在一般来说,你应该避免全局范围的变量,因为你永远不知道你可能会踩到哪个变量,例如:如果它与另一个变量同名。因此,更好的解决方案是将变量放在closure中。它的外观取决于您声明调用alert
的函数的确切位置。
我们假设您要引入一个新的全局函数ShowAlert
。您可以使用公共变量在同一代码块中定义它,这会将变量提升到局部范围之外并进入闭包,如下所示:
$(document).ready(function(){
var myVar; //We use the var keyword to declare this in local scope, for now
$("#tags").on("keyup", function() {
myVar = $(this).val();
});
ShowAlert = function() {
alert(myVar); //Using myVar here forces it into a closure, which will persist even after document.ready has exited
}
});
然后,要使用myVar
的最新值显示提醒,请使用:
ShowAlert();