我有一个定义变量的函数,如果我在函数内部调用它可以正常工作。当我尝试在功能之外使用警报时,它不起作用。我做错了什么和/或我需要做什么来调用/警告函数之外的函数。谢谢。
$(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
})
})
正如你所看到我试图设置一个变量“T”然后在函数之外提醒它。我需要使用函数外部的变量来做更多的表单处理。感谢。
答案 0 :(得分:2)
变量T超出范围。首先在上传调用之外定义它,然后在上传完成后在回调函数中调用alert。
修改强>
var T = '';
...
$(this).upload(
'filephp.php',
function(success){
var fmsg = success;
if(fmsg == "E") {
T = 'left';
}
},
$('#prog')
);
alert(T);
...
此示例的唯一问题是警报值''不'左',因为在上传完成时以及在警报之后调用回调函数。因此,您必须在成功回调中调用它以获得正确的值。
答案 1 :(得分:0)
基本上你必须在你的函数之前将“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 load