Javascript 在一系列提示中,需要反复询问最后一个提示,直到回答为止
我正在为一个网站创建一个笑话脚本,它会做一系列提示,询问用户是否同意我懂javascript。在他们第一次回答否定后,问题的一个稍加修改的版本被重述。最后,一个嘲弄性的问题被问出来,如果回答是否定的,你会一次又一次地问,直到答案是肯定的。我可以很好地讲到最后一部分。但我不知道如何让代码一次又一次地回到最后一个问题,然后在他们最终被迫说“是”之后切换到“谢谢”回答。任何帮助都将不胜感激 我的代码:Javascript 在一系列提示中,需要反复询问最后一个提示,直到回答为止,javascript,loops,Javascript,Loops,我正在为一个网站创建一个笑话脚本,它会做一系列提示,询问用户是否同意我懂javascript。在他们第一次回答否定后,问题的一个稍加修改的版本被重述。最后,一个嘲弄性的问题被问出来,如果回答是否定的,你会一次又一次地问,直到答案是肯定的。我可以很好地讲到最后一部分。但我不知道如何让代码一次又一次地回到最后一个问题,然后在他们最终被迫说“是”之后切换到“谢谢”回答。任何帮助都将不胜感激 我的代码: javascriptExample.addEventListener("click", functi
javascriptExample.addEventListener("click", function(){
const answer = prompt("This prompt was created using Javascript. Are you now satisfied we know Javascript? Y/n: ");
if (answer == "n") {
answerTwo = prompt("Sigh. Fine. What about now? Y/n: ");
if (answerTwo = "n") {
do{
const answerThree = prompt("Look, I can do this all day long. So, why don't you knock it off and just go ahead and say yes already, okay? Y/n: ");
} while(answerThree == "n");
} else {
alert("About time. Thank you for your cooperation and vote of confidence. I'm wasn't sure I could've kept it up forever.");
}
} else {
alert("Thanks for the vote of confidence. You're a real mensch!");
}
});
A、 B和C是你的问题。只是有点短
如果您想保持准确的答案结构:
if(confirm("A") || confirm("B")){
alert("nice of you!");
return;
}
while(true){
if(confirm("C")){
alert("youve got it");
return;
}
}
请注意,使用ES6常量或let定义的变量与使用var定义的变量类似 因此,answerThree不再是while条件中的范围,比较失败 相反,在循环之前定义变量:
let answerThree;
do {
answerThree = prompt("Look, I can do this all day long. So, why don't you knock it off and just go ahead and say yes already, okay? Y/n: ");
} while (answerThree == "n");
这将导致你想要的结果。还要注意,您不能重新分配常量,这就是为什么这里需要使用let
在他们最终被迫说“是”之后,切换到“谢谢”回应
这对我来说似乎不是一个好主意,因为人们可能会感到恼火,真的想跳过这个问题
让代码反复回到最后一个问题
但是,如果您需要以多种方式提出多个问题,而不是我建议将问题存储在数组中,那么2D可能会更有用
var question = {
'1' : {
'1' : 'joke1.1',
'2' : 'joke1.2'
},
'2' : {
'1' : 'joke2.1',
'2' : 'joke2.2'
}
};
question_no=2;
question_version=1
if (answer == "n") {
question_version++;
prompt( question_no[question_no][question_version]+ Y/n: ");
}else{
question_no++;
}
如果answerTwo=n,则输入错误{.=是赋值,==和===是比较的。通过这种方式,您可以使用confirmMessage而不是prompt来获得确定/取消对话框Fyi创建一个不能以明显方式取消的提示,其UI设计的糟糕程度与人们所能想到的差不多。@ScottMarcus这是一个笑话,而不是一个有效的例子UI@ScottMarcus,别担心,等第三个提示左右,浏览器将显示一个复选框,以阻止来自此网站的所有进一步对话。我肯定会选中它;…然后提前离开网站。如果您点击“取消”超过3次,这将返回到前两个问题。这真的很有帮助。谢谢。有没有办法获得另一个显示somet的最终警报当do/while循环终止时会发出刺耳的声音吗?我以前试过,但我想不出那部分。非常感谢。当然,只要把它放在while行的后面就行了!它将在循环完成后执行,而且只有在那时。
var question = {
'1' : {
'1' : 'joke1.1',
'2' : 'joke1.2'
},
'2' : {
'1' : 'joke2.1',
'2' : 'joke2.2'
}
};
question_no=2;
question_version=1
if (answer == "n") {
question_version++;
prompt( question_no[question_no][question_version]+ Y/n: ");
}else{
question_no++;
}