我有一个调用我的消息框的调用过程并期望返回值:
text = 'do you want?';
buttons = Array('Yes','No','Perhaps');
param = Array(text,buttons);
returnvalue = msg(param);
alert(returnvalue);
这会调用填充消息框的函数。填写后显示消息框。到目前为止它的作用。 但是:它不会等待(显示后)生成并返回所选值。我在哪里以及如何实施回调?
function msg(arr) {
var text = arr[0];
var buttons = arr[1];
$('#modal-text-msg').html(text);
out = '';
for (i = 0, len = buttons.length; i < len; i++) {
console.log(buttons[i]);
out += '<input type="button" class="modal-button modal-button-msg" value="'+buttons[i]+'">';
}
$('#modal-close-msg').html(out);
$('#modal-msg').show();
$('.modal-close').on('click', '.modal-button-msg', function(e) {
returnvalue = $(this).val();
$('#modal-msg').hide();
return returnvalue;
});
}
答案 0 :(得分:1)
您需要使用回调函数。 Javascript没有睡眠或等待命令。即使它确实如此,当Javascript不允许继续前进时,也会发生不好的事情。尝试将msg
更改为:
function msg(arr, callback) {
var text = arr[0];
var buttons = arr[1];
$('#modal-text-msg').html(text);
out = '';
for (i = 0, len = buttons.length; i < len; i++) {
console.log(buttons[i]);
out += '<input type="button" class="modal-button modal-button-msg" value="'+buttons[i]+'">';
}
$('#modal-close-msg').html(out);
$('#modal-msg').show();
$('.modal-close').on('click', '.modal-button-msg', function(e) {
returnvalue = $(this).val();
$('#modal-msg').hide();
if (callback instanceof Function) callback(returnvalue);
});
}
没有必要return returnvalue;
因为它将它返回到事件处理程序而不是msg
的调用者。来电者已经开始了。现在,您可以这样致电msg
:
msg(param, function(value) {
alert(value);
});