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

时间:2013-02-24 18:10:00

标签: javascript html function if-statement conditional

我正在为一些朋友建立一个笑话网站,网站上有一页我想要一些互动游戏。我已经习惯了C ++,所以过渡到javascript是一个有趣的过程。 我现在在页面上的所有内容都是段落元素,文本输入框和按钮。单击该按钮时,应该调用playGame()函数。 playGame函数查看段落元素(“游戏”)中的内容,然后查看用户输入并生成适当的结果。我只是使用一组条件来完成这个,但由于某种原因,该函数似乎没有改变段落元素,从而使整个事情变成了一个哑剧,经历了一些修改但我无法修复问题。这是代码:

<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>

为了适当,我只是将实际的文本内容更改为通用短语。任何有关函数未正确执行的帮助都将非常感激。

2 个答案:

答案 0 :(得分:2)

选择一个:

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

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

答案 1 :(得分:0)

您的代码中只有一些小的语法错误。这对我有用:

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\""其中\ '反斜杠'将单个下一个字符标记为编译器的字符串文字。