所以我有一个基本上调用另一个函数的javascript函数。这个其他函数返回true或false,然后我有一个if语句但是函数不等待返回值它只是不停地翻阅代码。解决这个问题的解决方案是什么?
所以我的第一个功能是:
confirmmation = show_confirmation("<some text>", "245px");
if (confirmmation) {
return true;
}
else {
return false;
}
那个电话:
function show_confirmation(message, height) {
var contentPosition = $('.content').position();
var contentHeight = $('.content').height();
var bottomPosition = contentPosition.top + contentHeight;
$('.confirmBox').css("top", (bottomPosition - ($('.confirmBox').outerHeight()+100)) + "px");
$('.confirmBox').css("left", (($('.content').width() - $('.confirmBox').outerWidth()) / 2) + $('.content').scrollLeft() + "px");
$('.confirmBox').css("height", height);
$('.confirmBox .confirmationMessage').html(message)
$('.confirmBox').css("display", "block");
$('#yesButton').click(function (e) {
e.preventDefault();
$('.confirmBox').hide("slow");
return true;
});
$('#noButton').click(function (e) {
e.preventDefault();
$('.confirmBox').hide("slow");
return false;
});
}
答案 0 :(得分:3)
解决方案是使用回调。您无法在浏览器中使用阻止功能。
让show_confirmation函数接受一个使用返回值调用的函数参数。
答案 1 :(得分:3)
您应该使用回调:
function show_confirmation(message, height, callback) {
// ...
$('#yesButton').click(function (e) {
e.preventDefault();
$('.confirmBox').hide("slow");
callback(true);
});
$('#noButton').click(function (e) {
e.preventDefault();
$('.confirmBox').hide("slow");
callback(false);
});
}
show_confirmation("<some text>", "245px", function(confirmation) {
if (confirmation) {
// yes button clicked
}
else {
// no button clicked
}
});
答案 2 :(得分:1)
function show_confirmation(message, height, callback) {
var contentPosition = $('.content').position();
var contentHeight = $('.content').height();
var bottomPosition = contentPosition.top + contentHeight;
$('.confirmBox').css("top", (bottomPosition - ($('.confirmBox').outerHeight()+100)) + "px");
$('.confirmBox').css("left", (($('.content').width() - $('.confirmBox').outerWidth()) / 2) + $('.content').scrollLeft() + "px");
$('.confirmBox').css("height", height);
$('.confirmBox .confirmationMessage').html(message)
$('.confirmBox').css("display", "block");
$('#yesButton').click(function (e) {
e.preventDefault();
$('.confirmBox').hide("slow");
callback(true);
});
$('#noButton').click(function (e) {
e.preventDefault();
$('.confirmBox').hide("slow");
callback(false);
});
}
function someAnotherFunction(value){
if(value){
//yesButton
}else{
//noButton
}
}
用法:
show_confirmation("message", 0, someAnotherFunction);