下午好下午... ..
我正在尝试在Javascript中创建一个函数,该函数生成类似于VB / VBA中的msgbox函数的屏幕对话框。到目前为止,我已经设法在Javascript中对msgbox函数进行编码,这样当它被调用时,它会动态地在屏幕上创建一个对话框。
它的工作原理如下: -
if (msgbox("Do you want to continue", YesNo) == Yes) {
//Do something here
}
我想知道的是 - 有什么方法可以暂停/暂停代码中的流程,直到按下动态生成的对话框中的一个按钮?在用户单击对话框中的“是”按钮之前,我不希望运行“在这里做点什么”或其他任何代码。
(注意:YesNo和Yes,在上面的示例中是常量。到目前为止,对话框完美无缺,我只需要知道如何在按下按钮之前停止流动而不会使事情过于复杂。)
垫
答案 0 :(得分:2)
如果您使用确认框,这应该适合您 - 它会使用ok / cancel选项触发提示:
if (confirm("Are you sure you wish to continue?")){
//executed when OK clicked
}
else{
//executed when CANCEL clicked
}
注意工作流程在功能中暂停,直到给出答案
答案 1 :(得分:1)
对不起,我有点迟了但我会做以下(假设只有两个可能的选择,即是或否,并且还假设正在使用模态类型确认框而不是花园种类警报/确认框):
将此变量存储形式添加到您的html中(未列出表单隐藏输入的注释值,因此当前为空值)
<form id="UserSelection" style="display:none"><input type="hidden" name="yes_or_no">
</form>
然后在模态确认框中添加两个按钮,其中“是”按钮触发“是”值,按钮“否”触发表单隐藏输入的“否”值:
<div id="ModalConfirm">
<button type="button" onclick="StoredSelectionVar('yes')">Yes</button>
<button type="button" onclick="StoredSelectionVar('no')">No</button>
</div>
其中函数StoredSelectionVar()定义为:
StoredSelectionVar(type) {
if (type === 'yes') {
document.forms['UserSelection']['yes_or_no'].value = 'yes';
} else {
document.forms['UserSelection']['yes_or_no'].value = 'no';
}
}
然后按如下方式修改剩余的javascript:
function YesOrNo() {
var x = document.forms['UserSelection']['yes_or_no'].value;
if (!x) {
window.setTimeout(YesOrNo, 1000);<!--Modify time as desired.....checks form
UserSelection to see if a value is present, which implies the user clicked either
the yes or no button for the hidden input, or no click if still a null value, in
which case the function is called again and the process repeated-->
} else {
if (x === 'yes') {
//Do This
} else {
//Do that
}
}
function yourFunction() {
if (msgbox("Do you want to continue")) {
YesOrNo();
} else {
//whatever
}
}
答案 2 :(得分:0)
JS中有alert()
和prompt()
这类事情。警报是针对只需要确认的简单消息,提示可以返回一些输入。
答案 3 :(得分:0)
如果您使用的是HTML元素,则需要将“是”按钮的onclick
属性设置为包含所需操作的函数,或者可以将addEventListener
用于现代浏览器。
function doStuff () {
// do stuff here
}
button.onclick = doStuff;
构建脚本的方式是,设置全局变量或顶级函数需要一些顶级代码,并在页面加载时执行您希望发生的任何其他操作。然后创建函数以对各种用户操作(单击/悬停/按键等)进行回调。没有真正的“暂停”,但您可以推迟功能,以便它们仅响应用户输入而执行。
如果你想以模态对话框的方式阻止其他用户操作,你必须通过某个对象的全局变量或属性设置状态,并让所有回调在执行之前检查。这可能很容易变得复杂,并且可能是更喜欢使用简单的confirm
提示的理由。