我有一个定义变量的函数,如果我在函数中调用这个veriable,它就能正常工作。当我试图在函数外部使用alert时,它不起作用。我做错了什么和/或我需要做什么才能在函数外部调用/警告函数。谢谢。
$(function() {
$("#MyForm").submit(function(){
$(':input.File').each(function() {
$(this).upload(
'filephp.php',
function(success){
var fmsg = success;
if(fmsg == "E") {var T = 'left';}
},
$('#prog')
)
alert(T);
});
return false
})
})正如您所看到的,im尝试设置一个变量"T“,然后在函数外部警告它。我需要在函数外部使用该变量来执行更多的表单处理。谢谢。
发布于 2014-04-01 05:34:46
变量T超出作用域。首先在upload调用外部定义它,然后在upload完成后在回调函数中调用alert。
编辑
var T = '';
...
$(this).upload(
'filephp.php',
function(success){
var fmsg = success;
if(fmsg == "E") {
T = 'left';
}
},
$('#prog')
);
alert(T);
...这个例子唯一的问题是警报值是'‘而不是'left’,因为回调函数是在上传完成时调用的,也就是在警报之后。所以你必须调用成功回调来获得正确的值。
发布于 2014-04-01 05:41:29
基本上,你必须在你的函数之前将"T“设置为一个变量,然后在你的函数中用类似T= "lol hai";的东西重新定义它。
*编辑-所以它有一些问题:http://jsfiddle.net/vAx6L/2/
就像您对变量"T“所做的那样,您也需要在函数外部将"fmsg”的变量设置为空白。
在Jquery中,您可以通过将函数设置为变量来创建函数,请参阅此链接:http://learn.jquery.com/javascript-101/functions/
有一些额外的不必要的字符检查控制台与此有关的错误,小提琴显示了您的示例的精简版本,因为显然没有您的上传库/插件。
var T;
var fmsg;
var newFunction = function(){
fmsg = "E";
if(fmsg == "E"){
T = 'left';
}
alert(T);
}; // no need for a closing ")" here
newFunction(); // This actually calls the function, should be in your document ready/ document loadhttps://stackoverflow.com/questions/22772583
复制相似问题