Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.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的本机行为';s提示符()?_Javascript_Execution_Prompt - Fatal编程技术网

是否可以复制JavaScript的本机行为';s提示符()?

是否可以复制JavaScript的本机行为';s提示符()?,javascript,execution,prompt,Javascript,Execution,Prompt,为了美观起见,我正在推出自己版本的prompt();就视觉效果而言,它进展得相当顺利,但我遇到了一个小问题:函数的本机版本会导致代码执行完全停止,直到处理完提示为止 这确实很可爱,这就是为什么下面的工作方式是这样的: <script> var c = prompt('Name?', ''); alert(c); // displays whatever the user entered </script> var c=提示('Name?',''); 警

为了美观起见,我正在推出自己版本的
prompt()
;就视觉效果而言,它进展得相当顺利,但我遇到了一个小问题:函数的本机版本会导致代码执行完全停止,直到处理完提示为止

这确实很可爱,这就是为什么下面的工作方式是这样的:

<script>
    var c = prompt('Name?', '');
    alert(c); // displays whatever the user entered
</script>

var c=提示('Name?','');
警惕(c);//显示用户输入的内容
然而,按照我的方法,事情并不顺利。我使用一个对话框、一个输入框和一个
OK
按钮从用户那里收集数据;据我所知,数据收集工作完美;也就是说,我确信在用户按下
OK
按钮后,我可以访问他们刚刚输入到提示符中的数据

然而,我无法找到一种方法让我的版本像本地版本那样工作。那么,我的问题是:在告诉JavaScript继续执行之前,是否有可能让它停止执行


提前感谢您提供的所有帮助。

不,不可能复制此行为。实现相同效果的方法是在代码中使用回调,因此可以执行以下操作:

myPrompt('Hello, mate, whats yer name?', function(answer) {
   alert(answer);
});
编辑:根据您的代码,为什么不这样做

<body>
<div id="prompt" style="display: none;">
<input type="text" id="q" /> <input type="button" value="OK" id="ok" />
</div>
<script>
$ = function(i) {return document.getElementById(i);}

_prompt = function(prompt, callback) {
    $('prompt').style.display = '';
    $('q').value = '';
    $('ok').onclick = function() {
        callback($('q').value);
    }
}

_prompt('Name?', function(answer) {
    alert(answer);  
});
</script>
</body>

$=函数(i){return document.getElementById(i);}
_prompt=函数(提示、回调){
$('prompt').style.display='';
$('q')。值='';
$('ok')。onclick=function(){
回调($('q').value);
}
}
_提示('Name'),函数(应答){
警惕(回答);
});
如果您更改
警报(应答)要说<代码>gAnswer=答案
(请注意,没有
var
declaration)您将创建一个名为
gAnswer
的全局变量,您可以访问javascript代码中的任何其他地方,前提是提示已经得到响应。如果您担心全局变量会污染您的空间,您可以将其全部封装在一个闭包中,但如果不是这样,则应该没有问题。

@Paolo:

这是我目前正在使用的代码:

<body>
<div id="prompt" style="display: none;">
<input type="text" id="q" /> <input type="button" value="OK" id="ok" />
</div>
<script>
$ = function(i) {return document.getElementById(i);}
_prompt = function(q, e)
 {
    $('prompt').style.display = '';
    $('q').value = '';
    $('ok').setAttribute('onclick', e + ' $("prompt").style.display = "none";');
 }
var c; _prompt('Name?', 'c = $("q").value;');
alert(c);
</script>
</body>

$=函数(i){return document.getElementById(i);}
_提示=功能(q,e)
{
$('prompt').style.display='';
$('q')。值='';
$('ok').setAttribute('onclick',e+'$('prompt”).style.display=“none”;);
}
var c_提示符('Name?','c=$('q”).value;');
警报(c);

现在,正如预期的那样,页面加载后立即触发alert(),这绝对不是我想要的;理想情况下,我希望代码的其余部分等待提示符得到处理,但我强烈怀疑这在本机实现之外是否可行。我想我只能满足于设计我的算法,以便立即使用提示?

Ack!正如我所想。。。所以没有办法储存这些价值供以后使用,嗯?你可以,你想做什么?如果你将变量设置为全局变量并在回调中设置它,你可以稍后访问它。。。你不能:(是的,您可以…您可以发布您正在尝试的内容吗?您可以编写myPrompt()代码以返回用户输入的值。因此,您将拥有
var c=myPrompt(…)
,然后您可以在其他任何地方使用
c
,而无需使用全局变量。