在JavaScript中基于用户输入使用条件语句的问题

Issues with using conditionals based on user input in JavaScript

本文关键字:输入 条件 语句 问题 用户 JavaScript 于用户      更新时间:2023-09-26

我正在为一些朋友建立一个笑话网站,我想在网站上的一个页面上有一个互动游戏。我已经习惯了C++,所以向javascript的转换是一个有趣的过程。我现在在页面上只有一个段落元素、一个文本输入框和一个按钮。当点击该按钮时,它应该调用playGame((函数。playGame函数查看段落元素("game"(中的内容,然后查看用户输入并生成适当的结果。我只是使用了一组条件词来实现这一点,但由于某种原因,该函数似乎没有改变段落元素,从而使整个事情变得毫无意义,经过了一些修改,但我未能解决这个问题。这是代码:

<html>
<script>
function playGame()
{
   test=document.getElementById("game");
   var userInput=gameInput=document.getElementById("gameInput").value;
   if (test.innerHTML=="Question_1")
      {
         if (userInput.toLowerCase()=="yes")
            {
               test.innerHTML="Ending_Result_1";
            }
         else if (userInput.toLowerCase()=="no")
            {
               test.innerHTML="Question_2";
            }
         else
            {
               test.innerHTML="Ending_Result_2";
            }
      }
   else if (test.innerHTML=="Question_2")
      {
         if (userInput.toLowerCase()=="yes")
            {
               test.innerHTML="Positive_Ending";
            }
         else if (userInput.toLowerCase()=="no")
            {
               test.innerHTML="Ending_Result_3";
            }
         else
            {
               test.innerHTML="Ending_Result_4";
            }
   else
      {
         test.innerHTML="Refresh_page_message";
      }
}
</script>

<head>
<title>CptTuna's Whip or No Whip</title>
</head>
<body>
<p id="game">"Question_1"</p>
<input id="gameInput" type="text">
<button type="button" onclick="playGame()">Answer</button>
</html>

为了适当起见,我只是把实际的文本内容改成了通用短语。如有任何关于函数执行不正确原因的帮助,我们将不胜感激。

选择一个:

  • 在条件中包括引号(""(,或者
  • 从HTML中删除引号

'Question_1' != '"Question_1"'
请注意,您可以使用单引号和双引号的组合来避免转义

您的代码中刚刚出现了一些小的语法错误。这对我有效:

function playGame() { 
  test=document.getElementById("game");
  var userInput=gameInput=document.getElementById("gameInput").value;
  if (test.innerHTML=="'"Question_1'"") {
    if (userInput.toLowerCase()=="yes") {
      test.innerHTML="Ending_Result_1";
    } else if (userInput.toLowerCase()=="no") {
      test.innerHTML="'"Question_2'"";
    } else {
      test.innerHTML="Ending_Result_2";
    }
  } else if (test.innerHTML=="'"Question_2'"") {
    if (userInput.toLowerCase()=="yes") {
      test.innerHTML="Positive_Ending";
    }  else if (userInput.toLowerCase()=="no") {
      test.innerHTML="Ending_Result_3";
    }  else {
      test.innerHTML="Ending_Result_4";
    }
  } else {
    test.innerHTML="Refresh_page_message";
  }
}

我已经自由地重新格式化了代码,以更好地适应我的风格(不是说你的代码有问题,而是为了能够看到你省略了括号的地方(。基本上,您还没有关闭一个条件语句,在最后一个else之前也没有关闭整个内部块。这引发了一个错误"没有在调试器中定义playGame">

另一点,但不是代码不编译的原因,是您没有在条件中包含"引号作为字符串文字,因为它是innerHTML内容的一部分。您的比较必须如下所示:test.innerHTML=="'"Question_1'"",其中'"反斜杠">将单个下一个字符标记为编译器的字符串文字。