Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery-函数完成后返回_Javascript_Jquery - Fatal编程技术网

Javascript jQuery-函数完成后返回

Javascript jQuery-函数完成后返回,javascript,jquery,Javascript,Jquery,我觉得这是一件相当简单的事情,但我似乎无法理解。我需要一个函数在一个操作完成后返回它的值 var msg = my_function(); alert(msg); function my_function(){ box = $("<div>"); button = $("<span>submit</span>").click(function(){ box.remove(); return "Hello World!"; });

我觉得这是一件相当简单的事情,但我似乎无法理解。我需要一个函数在一个操作完成后返回它的值

var msg = my_function();
alert(msg);

function my_function(){
  box = $("<div>");
  button = $("<span>submit</span>").click(function(){
    box.remove();
    return "Hello World!";
  });
  $("body").append(box);
} 
var msg=my_函数();
警报(msg);
函数my_函数(){
方框=$(“”);
按钮=$(“提交”)。单击(函数(){
box.remove();
返回“你好,世界!”;
});
$(“正文”)。附加(方框);
} 

但是,当我这样做时,它会在框被附加到body标记之前将msg返回为“undefined”。我该如何添加“完成时”或类似的内容呢?

您将报税表放错了位置。回调函数中的return语句将不起任何作用

var msg = my_function();
alert(msg);

function my_function(){
  box = $("<div>");
  button = $("<span>submit</span>").click(function(){
    box.remove();
    return "Hello World!"; // this return does not make sense
  });
  $("body").append(box);
  return "Hello World!"; // return here what you want
var msg=my_函数();
警报(msg);
函数my_函数(){
方框=$(“”);
按钮=$(“提交”)。单击(函数(){
box.remove();
return“Hello World!”;//此返回没有意义
});
$(“正文”)。附加(方框);
return“Hello World!”//返回您想要的内容

}你把报税表放错地方了。回调函数中的return语句将不起任何作用

var msg = my_function();
alert(msg);

function my_function(){
  box = $("<div>");
  button = $("<span>submit</span>").click(function(){
    box.remove();
    return "Hello World!"; // this return does not make sense
  });
  $("body").append(box);
  return "Hello World!"; // return here what you want
var msg=my_函数();
警报(msg);
函数my_函数(){
方框=$(“”);
按钮=$(“提交”)。单击(函数(){
box.remove();
return“Hello World!”;//此返回没有意义
});
$(“正文”)。附加(方框);
return“Hello World!”//返回您想要的内容

}我想这就是你想要的:

my_function(function(msg) { alert(msg); });

function my_function(callbackFn){
  box = $("<div>");
  button = $("<span>submit</span>").click(function(){
    box.remove();
    callbackFn("Hello World!");
  });
  $("body").append(box);
} 
my_函数(函数(msg){alert(msg);});
函数my_函数(callbackFn){
方框=$(“”);
按钮=$(“提交”)。单击(函数(){
box.remove();
callbackFn(“你好,世界!”);
});
$(“正文”)。附加(方框);
} 

但是你应该把这个
span
放在页面的某个地方。

我想这就是你想要的:

my_function(function(msg) { alert(msg); });

function my_function(callbackFn){
  box = $("<div>");
  button = $("<span>submit</span>").click(function(){
    box.remove();
    callbackFn("Hello World!");
  });
  $("body").append(box);
} 
my_函数(函数(msg){alert(msg);});
函数my_函数(callbackFn){
方框=$(“”);
按钮=$(“提交”)。单击(函数(){
box.remove();
callbackFn(“你好,世界!”);
});
$(“正文”)。附加(方框);
} 

但是你应该把这个
span
放在页面的某个地方。

my\u函数不会等到用户执行某个操作。传递给
.click()
的是另一个函数,它将作为事件处理程序附加,并在事件发生时执行。这称为异步(在本例中也是事件驱动)行为

获取您正在寻找的返回值的诀窍是为
my_函数
提供您自己的回调,该函数将在返回值可用时调用。请注意,只要有人单击按钮,就会执行此回调(顺便说一句,您必须将其添加到正文中,否则它不会显示在任何地方):

var myCallback=函数(msg){
警报(msg);
}
var msg=my_函数(myCallback);
函数my_函数(回调){
变量框=$(“”);
var按钮=$(“提交”)。单击(函数(){
box.remove();
回调(“你好,世界!”);
});
$(“正文”).append(框)。append(按钮);
} 

my_函数
不会等待用户执行操作。传递给
.click()
的是另一个函数,它将作为事件处理程序附加,并在事件发生时执行。这称为异步(在本例中也是事件驱动)行为

获取您正在寻找的返回值的诀窍是为
my_函数
提供您自己的回调,该函数将在返回值可用时调用。请注意,只要有人单击按钮,就会执行此回调(顺便说一句,您必须将其添加到正文中,否则它不会显示在任何地方):

var myCallback=函数(msg){
警报(msg);
}
var msg=my_函数(myCallback);
函数my_函数(回调){
变量框=$(“”);
var按钮=$(“提交”)。单击(函数(){
box.remove();
回调(“你好,世界!”);
});
$(“正文”).append(框)。append(按钮);
} 

无论你想做什么,你都需要把它放到你的

click(function() { ... }
。 说明:此函数仅在“单击”实际发生后返回内容


由于您的“my_function()”只会在单击后返回任何内容(它不返回),因此,“msg”将始终是未定义的!->“警报”不会等到分配了“msg”之后才发出…

无论您想做什么,都需要将其放入您的

click(function() { ... }
。 说明:此函数仅在“单击”实际发生后返回内容


由于您的“my_function()”只会在单击后返回任何内容(它不返回),因此,“msg”将始终是未定义的!->“警报”不会等到分配了“msg”之后才返回…

但如果我不希望它在单击按钮之后返回,该怎么办?然后你应该将你想做的事情作为回调传入。确切地说。看看@rtcherry answer,它会完全这样做。但是,如果我不希望它在单击按钮之前返回,该怎么办?然后你应该以回调的形式传递你想要做的事情。完全正确。请看@rtcherry answer,它将完全做到这一点。您正在添加一个事件侦听器。侦听器可以触发多次,每次单击一次。有返回值没有意义。您正在添加事件侦听器。侦听器可以触发多次,每次单击一次。有一个返回值是没有意义的。