gpt4 book ai didi

javascript - 是否可以复制JavaScript的prompt()的 native 行为?

转载 作者:行者123 更新时间:2023-11-29 16:30:01 24 4
gpt4 key购买 nike

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

这确实很可爱,这就是为什么下面的代码会这样工作:

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

然而,按照我的方法,事情并不那么顺利。我使用一个对话框、一个输入框和一个OK按钮来从用户那里收集数据;据我所知,数据收集工作完美;也就是说,我确信用户按下 OK 按钮后,我就可以访问他们刚刚放入提示中的数据。

但是,我无法找到一种方法让我的版本像 native 版本一样工作。那么我的问题是:是否有可能告诉 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>

如果您将 alert(answer); 更改为... gAnswer = answer;(注意没有 var 声明),您将创建一个名为 gAnswer 的全局变量,您可以在 javascript 代码中的任何其他位置访问该变量(假设提示已得到答复)。如果您担心全局变量会污染您的空间,您可以将其全部包装在一个闭包中,但否则应该没问题。

关于javascript - 是否可以复制JavaScript的prompt()的 native 行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/673579/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com