Javascript 如何等待messagebox的返回值
我有一个调用过程,该过程调用我的messagebox并期望返回值:Javascript 如何等待messagebox的返回值,javascript,jquery,Javascript,Jquery,我有一个调用过程,该过程调用我的messagebox并期望返回值: text = 'do you want?'; buttons = Array('Yes','No','Perhaps'); param = Array(text,buttons); returnvalue = msg(param); alert(returnvalue); 这将调用填充messagebox的函数。填充后,将显示消息框。到目前为止,它是有效的。 但是:它不会等待(在显示之后)生成并返回所选的值。在哪里以及如何执
text = 'do you want?';
buttons = Array('Yes','No','Perhaps');
param = Array(text,buttons);
returnvalue = msg(param);
alert(returnvalue);
这将调用填充messagebox的函数。填充后,将显示消息框。到目前为止,它是有效的。
但是:它不会等待(在显示之后)生成并返回所选的值。在哪里以及如何执行回调
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;
});
}
函数消息(arr){
var text=arr[0];
var按钮=arr[1];
$('#modal text msg').html(text);
out='';
对于(i=0,len=buttons.length;i
您需要使用回调函数。Javascript没有sleep或wait命令。即使是这样,当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);
});
}
Ogbum这个很好用。。。谢谢但是如果我多次呼叫它,它会增加警报。。。这是因为instanceof???
instanceof
只需确保我们知道回调实际包含的内容(如果调用msg(params,6)
,这不会引发错误)。您多次调用的“it”到底是什么?假设我的页面上有多个按钮,用户可以单击,并被询问如何操作。现在我按下了一些按钮,得到了更多的提示…这可能证明这是我自己的问题。是的,你是对的!!!找到了。是事件处理程序。解决方法是:$('.modal close').off('click').on('click',function(){})代码>
msg(param, function(value) {
alert(value);
});