我是JavaScript和JQuery的初学者。我只是想尝试一个有趣的程序,就像JavaScript中的提示框一样。我创建了该函数并且它确实有效,但问题是当我将它包含在alert()
中时,它不会等到我的函数完成它的执行。
这是我的代码:
function getString(labeltxt){
$("body").append("<div class='pageTakeout'><div id='alertzone'><p id='alertzonetext'></p><input type='button' id='alertzoneclicker' value='OK' onclick='returnString()' /></div></div>");
$("#alertzonetext").text(labeltxt);
$("#alertzonetext").append("<br><br><input type='text' id='getstring_temptext' name='getstring_temptext' />");
$(".pageTakeout").css({'display':'block'});
$("#getstring_temptext").focus();
getTextVal(function(result){
return returnString(result);
});
}
function getTextVal(callback){
$("#getstring_temptext").keyup(function(e){
if(e.keyCode==13){
result=$("#getstring_temptext").val();
callback(result);
}
});
}
function returnString(result){
$("#alertzonetext").text('');
$(".pageTakeout").fadeOut(200,function(){
$(".pageTakeout").remove();
});
var test = result;
return test;
}
alert(getString('Enter some text'));
答案 0 :(得分:1)
prompt
和alert
由于其同步性而无法复制。
您必须添加回调而不是返回值(异步),就像对getTextVal
执行此操作一样:
function getString(labeltxt, callback){
...
getTextVal(function(result){
callback(returnString(result));
});
}
最后的电话必须是:
getString('Enter some text', function(string){
alert(string);
});
干杯