Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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 在一系列提示中,需要反复询问最后一个提示,直到回答为止_Javascript_Loops - Fatal编程技术网

Javascript 在一系列提示中,需要反复询问最后一个提示,直到回答为止

Javascript 在一系列提示中,需要反复询问最后一个提示,直到回答为止,javascript,loops,Javascript,Loops,我正在为一个网站创建一个笑话脚本,它会做一系列提示,询问用户是否同意我懂javascript。在他们第一次回答否定后,问题的一个稍加修改的版本被重述。最后,一个嘲弄性的问题被问出来,如果回答是否定的,你会一次又一次地问,直到答案是肯定的。我可以很好地讲到最后一部分。但我不知道如何让代码一次又一次地回到最后一个问题,然后在他们最终被迫说“是”之后切换到“谢谢”回答。任何帮助都将不胜感激 我的代码: javascriptExample.addEventListener("click", functi

我正在为一个网站创建一个笑话脚本,它会做一系列提示,询问用户是否同意我懂javascript。在他们第一次回答否定后,问题的一个稍加修改的版本被重述。最后,一个嘲弄性的问题被问出来,如果回答是否定的,你会一次又一次地问,直到答案是肯定的。我可以很好地讲到最后一部分。但我不知道如何让代码一次又一次地回到最后一个问题,然后在他们最终被迫说“是”之后切换到“谢谢”回答。任何帮助都将不胜感激

我的代码:

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++;
}