var myvar = "my value";
(function() {
alert(myvar); // undefined
})();
或
var myvar = "my value";
$.post( url,
function( data ) {
alert(myvar); // undefined
});
如何在不将此值存储在隐藏的输入或div或其他html容器中的情况下解决此问题?
答案 0 :(得分:2)
如果将变量放在可通过引用访问的范围内,则一切正常。你可以在这里看到第一个例子:http://jsfiddle.net/jfriend00/WvnvC/
所以,你显然没有向我们展示整个图片,你可能已经在一个范围内声明了变量,而这个变量在你的引用中是不可用的。我们必须看到实际代码或实际范围才能知道问题所在。
此问题的一个常见原因是您在myvar
处理程序(不是全局范围)中定义了$(document).ready()
,然后您尝试从外部引用{{1}处理程序,它将无法访问。尝试将$(document).ready()
的定义放在实际的全局范围内(不在任何其他函数内),或者放在与您尝试引用它的函数相同的范围内。
答案 1 :(得分:1)
您可以将其声明为全局(可以使用),但在为此目的编写JavaScript时可能不是最佳做法。
最好的方法是将变量存储在函数的顶部,位于函数的顶部
$.post( url,
function( data ) {
var myvar = "my value";
alert(myvar); // undefined
});
如果您尝试在多种功能中使用它,我建议
(function($) {
var myvar = "my value"; // To set this as a global, just remove the "var"
$.post( url,
function(data) {
alert(myvar); // undefined
});
})(jQuery);