2017-06-19 97 views
0

我对这个论坛和jquery都比较陌生。因此,如果我的问题是错误的,请不要标记negetive incase。在jquery范围之外的alert变量

我曾试图搜索,但仍然无法为我的问题得到适当的解决方案。

我正在使用更改函数来获取更新的输入值,如下所示,它工作得很好。我也能够通过下面提到的范围内的更新值来提醒变量。

$(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

尝试加入'VAR myVar的=“”;'准备(功能之后'(){' –

+0

我已经发布了这个问题之前尝试过这一点,但它不工作,就可以在张贴帮助。解决方法是JSfiddle?它会帮助我很多 –

回答

0

如果试图范围之外的提醒这一点,它会来的空白,因为它会在页面加载时被触发

相反,我认为你要调用它的一些事件监听器里的,这就是为什么你试图将其分配给一个变量外面

$(document).ready(function(){ 
    var myVar = ''; 
    $("#tags").keyup(function() { 
     myVar = $(this).val(); 
     alert(myVar); 
    }); 

    //or another event listener { 
     alert(myVar); 
    }); 
}); 
+0

那么如何在另一个事件列表器中调用?你能否提供更新的代码? –

+0

th取决于你何时想要提醒值 – Saksham

+0

更改后的值需要在JSON输出的API url中更新。除非我们在没有页面刷新的情况下自动获取更改值,否则将无法实现。为了使用url中的更改值进行更新,我需要将范围外的更改值用于其他函数或事件侦听器中。 –

0

你需要在一些地方保存myVar中可以通过调用alert函数读取的范围。大锤的做法是把myVar在全球范围内,像这样:

$(document).ready(function(){ 
    $("#tags").on("keyup", function() { 
     myVar = $(this).val(); //notice no var keyword 
    }); 
}); 

当使用的变量,而不与var宣布,它在全球scope--技术上结束了,它会成为当前窗口的属性。如果你想成为你的明确可以写为

$(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(); 
+0

但是,window.myVar将如何返回范围之外的值?请解释 –

+0

因为'window.myVar'存储在本地范围和全局范围之外。它可以通过窗口中任何地方的代码访问。话虽如此,一个全局变量并不理想,所以请张贴需要使用*'myVar'的代码,我可以告诉你如何访问它。 –

+0

@John Wu:我想将更改的值连接到JSON输出的url。示例:https://example.com/suggest?label=changed_input_values&City=NY&f=pjson –