2

私は何人かの友人のためにジョークのウェブサイトを構築しています、そしてウェブサイトの1ページは私がいくらかインタラクティブなゲームを持ちたいです。私は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>

適切にするために、実際のテキストコンテンツを一般的なフレーズに変更しました。関数が正しく実行されない理由についての助けをいただければ幸いです。

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

私は自分のスタイルに合うように自由にコードを再フォーマットしました (あなたのコードに何か問題があることを示唆するのではなく、閉じ括弧を省略した場所を確認できるようにするためです)。基本的に、1 つの条件文を閉じていません。また、最後の前に内側のブロック全体も閉じていませんelseこれにより、デバッガーで「playGame is not defined」というエラーがスローされました。

コードがコンパイルされない理由ではないもう 1 つのポイントは、"引用符が innerHTML コンテンツの一部である条件に文字列リテラルとして含まれていないことです。比較は次のようにする必要がありますtest.innerHTML=="\"Question_1\""\ 「バックスラッシュ」は、次の単一の文字を文字列リテラルとしてコンパイラにマークします。

于 2013-02-24T18:22:28.833 に答える