![](/img/trans.png)
[英]Javascript call function once loop finishes and jQuery populates content
[英]jQuery - Return once function finishes
我覺得這是一件相當簡單的事情,但我似乎無法弄清楚。 我需要一個函數來在動作完成后返回它的值。
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);
}
但是,當我這樣做時,它甚至在框附加到body標簽之前都將msg返回為“ undefined”。 如何在此基礎上添加“完成”或類似內容?
my_function
不會等到用戶執行操作。 您傳遞給.click()
是另一個函數,它將附加為事件處理程序,並在事件發生時執行。 這稱為異步(在這種情況下,也是事件驅動)行為。
獲得所需的返回值的技巧是為my_function
提供自己的回調,該回調將在可用時使用該返回值進行調用。 請注意,此回調將在有人單擊按鈕時執行(順便說一句,您必須將其添加到正文中,否則它不會在任何地方顯示):
var myCallback = function(msg) {
alert(msg);
}
var msg = my_function(myCallback);
function my_function(callback) {
var box = $("<div>");
var button = $("<span>submit</span>").click(function(){
box.remove();
callback("Hello World!");
});
$("body").append(box).append(button);
}
您將退貨放在錯誤的位置。 回調函數中的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
}
我認為這是您想要的:
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);
}
但是您應該將該span
放在頁面上的某個位置。
無論您想做什么,都需要將其放入您的
click(function() { ... }
。 說明:該函數僅在實際發生“單擊”之后才返回內容。
由於單擊后您的“ my_function()”僅返回任何內容(不會返回任何內容),因此“ msg”將始終是未定義的! ->“警報”不會等到分配了“ msg”后才開始...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.