需要javascript自定义提示框帮助

需要javascript自定义提示框帮助,javascript,javascript-events,return,custom-controls,prompt,Javascript,Javascript Events,Return,Custom Controls,Prompt,因此,我为javascript创建了一个定制的提示框,因此我不必使用常用的提示框,但是我不知道如何直接从cPrompt函数返回值。我希望能够像普通的提示符一样使用它,并且能够像var name=cPromptWhats your name这样做。然而,要关闭自定义提示符,我必须使用一个事件在单击按钮时触发一个名为ok的函数。这将禁止我直接从cPrompt函数返回值。谁能想出我该怎么做?这是我的密码: HTML: JS: 因此,现在我无法收集框中的值。谁能想出我该怎么做。请记住,我希望能够像pro

因此,我为javascript创建了一个定制的提示框,因此我不必使用常用的提示框,但是我不知道如何直接从cPrompt函数返回值。我希望能够像普通的提示符一样使用它,并且能够像var name=cPromptWhats your name这样做。然而,要关闭自定义提示符,我必须使用一个事件在单击按钮时触发一个名为ok的函数。这将禁止我直接从cPrompt函数返回值。谁能想出我该怎么做?这是我的密码:

HTML:

JS:


因此,现在我无法收集框中的值。谁能想出我该怎么做。请记住,我希望能够像propmt一样调用它,而不必使用任何其他调用,如so console.logcPromptsay有些事情我可能会想得太多,或者可能是不可能的,欢迎任何想法

EDIT-好的,这样就不会像console.logcPrompt“message”那么简单,但是有一种方法可以做你想做的事情。参见改编自。由于某种原因,我无法让它在chrome中工作,但firefox做到了这一点。最酷的部分在main中,它必须在runmain调用中

你又问了一个很难的问题,所以它不会像你希望的那么容易,但它就在这里。另外,如果能告诉我们你到目前为止都做了些什么,那就太酷了

编辑前:

乍一看,我认为这是不可能的。如果您的cPrompt函数保存了解释器,因此它可以返回用户的输入,我认为该页面将冻结。你试过这样的东西吗

//This will probably freeze the page
function cPrompt(_msg){
    ...//init the prompt
    while( input == null){}//your prompt sets input in an event
    return input;
}
通常的做法是通过这样的关闭

function whenInput(_input){console.log(_input);}
cPrompt('message', whenInput);
现在,我在想JS1.7中的新版本可能会有一种方法


那么,您尝试了什么?

您使用的while循环的第一种方法不起作用,因为它要么返回得太早,要么导致了太多的递归错误,而且我从未见过第二个示例。您能解释一下它是什么以及输入意味着什么吗?正如我所说,第一位代码将冻结页面。第二种是常见的,但它不会达到你想要的。在这里你可以了解更多关于闭包的知识,好吧,你的问题引起了我的兴趣,结果可能有一种方法,通过蹦床:。请注意,这是相当令人费解的。我做了一个很好的开始,但最终我无法返回值:不返回变量很容易,但我希望它像正常的提示函数一样工作,而不必将结果保存到另一个变量。我进一步研究了,可以使用console.logyield cPrompt“你要做什么?”;请参阅我的编辑。
var overlay = document.getElementById("overlay")
var pBox = document.getElementById("pBox")
var cPromptOut = document.getElementById("cPromptOut")
var In = document.getElementById("cPromptIn").value
function cPrompt(msg){

    overlay.style.display = "block";
    pBox.style.display = "block";
    cPromptOut.innerHTML = msg;

}
function ok(){
    overlay.style.display = "none";
    pBox.style.display = "none";
}

console.log(cPrompt("enter you name"))
function main(){
    log('start listening');
    log(yield prompt('hello'));//the code "seems" to halt here.
    log('end script');
}
//This will probably freeze the page
function cPrompt(_msg){
    ...//init the prompt
    while( input == null){}//your prompt sets input in an event
    return input;
}
function whenInput(_input){console.log(_input);}
cPrompt('message', whenInput);