Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何等待messagebox的返回值_Javascript_Jquery - Fatal编程技术网

Javascript 如何等待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的函数。填充后,将显示消息框。到目前为止,它是有效的。 但是:它不会等待(在显示之后)生成并返回所选的值。在哪里以及如何执

我有一个调用过程,该过程调用我的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);
});