是否存在类似if不匹配或else循环的情况。我需要帮助使这个JavaScript脚本工作

是否存在类似if不匹配或else循环的情况。我需要帮助使这个JavaScript脚本工作,javascript,Javascript,我如何根据不匹配或可能类似于Else循环得到响应,但这似乎不起作用,因为即使我正确回答了问题,我也能得到响应,如果我可以做类似于和if不匹配或类似的事情。我是JavaScript新手,所以我自己无法解决这个问题 var PromptAnswer3 = prompt("Well, what sports do you like to play?", ""); while (PromptAnswer3 === null | PromptAnswer3 === "") { a

我如何根据不匹配或可能类似于Else循环得到响应,但这似乎不起作用,因为即使我正确回答了问题,我也能得到响应,如果我可以做类似于和if不匹配或类似的事情。我是JavaScript新手,所以我自己无法解决这个问题

var PromptAnswer3 = prompt("Well, what sports do you like to play?", "");
    while (PromptAnswer3 === null | PromptAnswer3 === "") 
    {
    alert("You didn't answer");
    PromptAnswer3 = prompt("Well, what sports do you like to play?", "");
    }
if (PromptAnswer3.match(/^(tennis|bowling|baseball|soccer|basketball|football|cricket|hockey|ice|hockey|rugby|track|golf|horseracing|water polo|swimming|biking|gymnastics|cheer-leading|skiing|snowboarding|iceskating|lacrosse|surfing|archery|boxing|kayaking|diving|spelunking|fencing|karate|judo|rockclimbing|softball|volleyball|wrestling|badminton|javelin throwing|synchronized swimming|yoga|ringette)!?$/i)) 
{
alert("Haha yeah, " + PromptAnswer3 "is pretty awesome.");
}
  while (PromptAnswer3)
{
  alert("I don't think that is a sport.");
  PromptAnswer3 = prompt("Well, what sports do you like to play?", "");
}
编辑[可能应作为答案添加]

这就是我所做的,让它工作。它简单易行。我按照一些人对答案的建议,将if语句放入循环中,而(PromptAnswer3),并将else和break放入if中,这样它就不会在第一次之后循环

else {
    var PromptAnswer3 = prompt("Well, what sports do you like to play?", "");
    while (PromptAnswer3 === null | PromptAnswer3 === "") 
    {
        alert("You didn't answer");
        PromptAnswer3 = prompt("Well, what sports do you like to play?", "");
    }
    while (PromptAnswer3)
{
if (PromptAnswer3.match(/^(tennis|bowling|baseball|soccer|basketball|football|cricket|hockey|ice|hockey|rugby|track|golf|horseracing|water polo|swimming|biking|gymnastics|cheer-leading|skiing|snowboarding|iceskating|lacrosse|surfing|archery|boxing|kayaking|diving|spelunking|fencing|karate|judo|rockclimbing|softball|volleyball|wrestling|badminton|javelin throwing|synchronized swimming|yoga|ringette)!?$/i)) 
{
    alert("Haha yeah, " + PromptAnswer3 + "is pretty awesome.");
    break;
    }
    else {
      alert("I don't think that is a sport.");
      PromptAnswer3 = prompt("Well, what sports do you like to play?", "");
    }
    }
}
首先:

alert("Haha yeah, " + PromptAnswer3 "is pretty awesome.");
应该有一个额外的加号,不是吗

alert("Haha yeah, " + PromptAnswer3 + "is pretty awesome.");
这对我来说太过分了

另外,您的第二个
while(PromptAnswer3)
应该是一个else。所以可能是这样的:

var PromptAnswer3 = prompt("Well, what sports do you like to play?", "");
while (PromptAnswer3 === null | PromptAnswer3 === "") {
    alert("You didn't answer");
    PromptAnswer3 = prompt("Well, what sports do you like to play?", "");
    if (PromptAnswer3.match(/^(tennis|bowling|baseball|...)!?$/i)) {
      alert("Haha yeah, " + PromptAnswer3 "is pretty awesome.");
    } else {
      alert("I don't think that is a sport.");
      PromptAnswer3 = prompt("Well, what sports do you like to play?", "");
    }
}
我不知道你想什么时候退出,但看起来它永远不会退出。也许这就是你的意图。这些东西对我来说很奇怪,但我没有测试它。

首先:

alert("Haha yeah, " + PromptAnswer3 "is pretty awesome.");
应该有一个额外的加号,不是吗

alert("Haha yeah, " + PromptAnswer3 + "is pretty awesome.");
这对我来说太过分了

另外,您的第二个
while(PromptAnswer3)
应该是一个else。所以可能是这样的:

var PromptAnswer3 = prompt("Well, what sports do you like to play?", "");
while (PromptAnswer3 === null | PromptAnswer3 === "") {
    alert("You didn't answer");
    PromptAnswer3 = prompt("Well, what sports do you like to play?", "");
    if (PromptAnswer3.match(/^(tennis|bowling|baseball|...)!?$/i)) {
      alert("Haha yeah, " + PromptAnswer3 "is pretty awesome.");
    } else {
      alert("I don't think that is a sport.");
      PromptAnswer3 = prompt("Well, what sports do you like to play?", "");
    }
}

我不知道你想什么时候退出,但看起来它永远不会退出。也许这就是你的意图。这些事情对我来说很奇怪,但我没有测试它。

我想你只需要在
中添加一个
else
,如果

if ([comparison is true]) {
    // you have a match 
} else {
    // you do not
}

我认为您只需要在
if
中添加
else

if ([comparison is true]) {
    // you have a match 
} else {
    // you do not
}
  • 我觉得你的缩进风格很难读
  • 您真的想在第一个if语句中使用按位or吗?(
    |
  • 使用
    test
    测试正则表达式是否与字符串匹配。不要为此使用
    match
  • 只要颠倒
    while
    语句中的逻辑即可

    var PromptAnswer3 = prompt("Well, what sports do you like to play?", "");
    while (!PromptAnswer3) {
        alert("You didn't answer");
        PromptAnswer3 = prompt("Well, what sports do you like to play?", "");
    }
    
    while (!/^(tennis|bowling|baseball|soccer|basketball|football|cricket|hockey|ice|hockey|rugby|track|golf|horseracing|water polo|swimming|biking|gymnastics|cheer-leading|skiing|snowboarding|iceskating|lacrosse|surfing|archery|boxing|kayaking|diving|spelunking|fencing|karate|judo|rockclimbing|softball|volleyball|wrestling|badminton|javelin throwing|synchronized swimming|yoga|ringette)!?$/i.test(PromptAnswer3)) {
        alert("I don't think that is a sport.");
        PromptAnswer3 = prompt("Well, what sports do you like to play?", "");
    }
    alert("Haha yeah, " + PromptAnswer3 "is pretty awesome.");
    
      • 我觉得你的缩进风格很难读
      • 您真的想在第一个if语句中使用按位or吗?(
        |
      • 使用
        test
        测试正则表达式是否与字符串匹配。不要为此使用
        match
      • 只要颠倒
        while
        语句中的逻辑即可

        var PromptAnswer3 = prompt("Well, what sports do you like to play?", "");
        while (!PromptAnswer3) {
            alert("You didn't answer");
            PromptAnswer3 = prompt("Well, what sports do you like to play?", "");
        }
        
        while (!/^(tennis|bowling|baseball|soccer|basketball|football|cricket|hockey|ice|hockey|rugby|track|golf|horseracing|water polo|swimming|biking|gymnastics|cheer-leading|skiing|snowboarding|iceskating|lacrosse|surfing|archery|boxing|kayaking|diving|spelunking|fencing|karate|judo|rockclimbing|softball|volleyball|wrestling|badminton|javelin throwing|synchronized swimming|yoga|ringette)!?$/i.test(PromptAnswer3)) {
            alert("I don't think that is a sport.");
            PromptAnswer3 = prompt("Well, what sports do you like to play?", "");
        }
        alert("Haha yeah, " + PromptAnswer3 "is pretty awesome.");
        
      这样的问题对于do-while构造来说总是一个很好的用例


      这样的问题对于do-while构造总是一个很好的用例。

      他的意思是将最后一个while循环更改为else语句,这样它只在与正则表达式不匹配时运行。他的意思是将最后一个while循环更改为else语句,这样它只在与正则表达式不匹配时运行。除了按位执行之外,还有其他建议吗?我不是很熟悉javascript。@user1067625是的,您应该只使用逻辑or(
      | |
      )。有关详细信息,请参见Mozilla's fine。但是,在上面的代码中,我完全去掉了运算符,因为如果值是
      null
      ,或
      0
      ,则相当于
      false
      。嗯,好吧!谢谢你的帮助!除了点评之外还有什么建议吗?我不是很熟悉javascript。@user1067625是的,您应该只使用逻辑or(
      | |
      )。有关详细信息,请参见Mozilla's fine。但是,在上面的代码中,我完全去掉了运算符,因为如果值是
      null
      ,或
      0
      ,则相当于
      false
      。嗯,好吧!谢谢你的帮助!另一个问题。我将如何使其在重新提示时有最大的尝试次数。我想因为我只有13岁,我需要一些帮助。请不要更新你的问题来包含答案,而是通过点击左边的勾号来接受下面的答案之一。(如果你的最终解决方案与所有答案都不一样,那么你应该自己发布一个答案并接受。)我的错,我是这些论坛的新手,我没有足够的代表来接受答案,但当我获得更多的代表时,我会接受,并且在我意识到我不应该这么做后,意外地这样做了:D对不起,另一个问题。我将如何使其在重新提示时有最大的尝试次数。我想因为我只有13岁,我需要一些帮助。请不要更新你的问题来包含答案,而是通过点击左边的勾号来接受下面的答案之一。(如果你的最终解决方案与所有答案都不一样,那么你应该自己发布一个答案并接受。)我的错,我是这些论坛的新手,我没有足够的代表来接受答案,但当我获得更多的代表时,我会接受,而且在我意识到我不应该这么做之后,我意外地这么做了:D对不起。