2

我正在为一些朋友建立一个笑话网站,网站上的一个页面我想有一些互动游戏。我习惯了 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>

为了适当起见,我只是将实际文本内容更改为通用短语。任何有关为什么该功能无法正常执行的帮助将不胜感激。

4

2 回答 2

2

选一个:

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

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

于 2013-02-24T18:43:47.527 回答
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\""其中\ “反斜杠”将单个下一个字符标记为编译器的字符串文字。

于 2013-02-24T18:22:28.833 回答