2016-10-17 5 views
0

これはクイズで、各質問にJSONファイルの単語を入力しようとしています。JSONデータを使用してdivを挿入して、別のdivをHTMLに取り込みます。

Here is the JSFiddle

activity.json質問 words.jsonある言葉が

誰かが私を助けることができていますか?それは未定義をもたらす。

私は言葉を移入したいのdivのIDが

#wordsである私は、失われたんだとそれらを表示する方法を見つけることができません。

$(document).ready(function() { 
     var questionNumber = 0; 
     var wordNumber = 0; 
     var questionBank = new Array(); 
     var wordsBank = new Array(); 
     var stage = "#game1"; 
     var stage2 = new Object; 
     var questionLock = false; 
     var numberOfQuestions; 
     var score = 0; 

     $.getJSON('activity.json', function(data) { 
      for (i = 0; i < data.quizlist.length; i++) { 
      questionBank[i] = new Array; 
      questionBank[i][0] = data.quizlist[i].question; 
      questionBank[i][1] = data.quizlist[i].option1; 
      questionBank[i][2] = data.quizlist[i].option2; 
      questionBank[i][3] = data.quizlist[i].option3; 
      } 

      $.getJSON('words.json', function(data) { 

      for (i = 0; i < data.quizlist.length; i++) { 
       wordsBank[i] = new Array; 
       wordsBank[i] = data.quizlist[0].words1; 
       wordsBank[i] = data.quizlist[1].words2; 
      } 
      numberOfWords = wordsBank.length; 
      }) 
      numberOfQuestions = questionBank.length; 

      displayQuestion(); 
     }) //gtjson 

     function displayQuestion() { 
      var q1; 
      var q2; 
      var q3; 
      var q4; 
      var q5; 
      var rnd = Math.random() * 3; 
      rnd = Math.ceil(rnd); 

      if (rnd == 1) { 
      q1 = questionBank[questionNumber][1]; 
      q2 = questionBank[questionNumber][2]; 
      q3 = questionBank[questionNumber][3]; 
      } 
      if (rnd == 2) { 
      q2 = questionBank[questionNumber][1]; 
      q3 = questionBank[questionNumber][2]; 
      q1 = questionBank[questionNumber][3]; 
      } 
      if (rnd == 3) { 
      q3 = questionBank[questionNumber][1]; 
      q1 = questionBank[questionNumber][2]; 
      q2 = questionBank[questionNumber][3]; 
      } 

      $(stage).append('<div class="questionText">' + questionBank[questionNumber][0] + '</div><div id="1" class="option">' + q1 + '</div><div id="2" class="option">' + q2 + '</div><div id="3" class="option">' + q3 + '</div>'); 

      $('.option').click(function() { 
      if (questionLock == false) { 
       questionLock = true; 
       $('#words').append('<div class="word-pt bluedark_txt">' + q5 + '</div><div id="1" class="words word-en bluish_txt">' + q4 + '</div>'); 

       //correct answer 
       if (this.id == rnd) { 
       $(stage).append('<div class="feedback1">CORRECT</div>'); 
       score++; 
       } 
       //wrong answer  
       if (this.id != rnd) { 
       $(stage).append('<div class="feedback2">WRONG</div>'); 
       } 

       setTimeout(function() { 
       changeQuestion() 
       }, 1000); 
      } 
      }) 
     } //display question 

     function changeQuestion() { 
      questionNumber++; 

      if (stage == "#game1") { 
      stage2 = "#game1"; 
      stage = "#game2"; 
      } else { 
      stage2 = "#game2"; 
      stage = "#game1"; 
      } 

      if (questionNumber < numberOfQuestions) { 
      displayQuestion(); 
      } else { 
      displayFinalSlide(); 
      } 

      $(stage2).animate({ 
      "right": "+=800px" 
      }, "slow", function() { 
      $(stage2).css('right', '-800px'); 
      $(stage2).empty(); 
      }); 
      $(stage).animate({ 
      "right": "+=800px" 
      }, "slow", function() { 
      questionLock = false; 
      }); 
     } //change question 
+1

[jsFiddle](https://jsfiddle.net/)を作成すると、このサイトのユーザーがあなたを支援する可能性が高くなります。 – Almond

+1

クイズリストとは何ですか?私はあなたのforループでそれを参照して参照してくださいが、あなたはどこに定義されていません。 –

+0

quizlistはjson変数@DanielZuzevichの名前です – spaceman

答えて

-1

最初のものが最初です。最新のブラウザでF12キーを押すと、開発ツールが起動し、エラーをデバッグするのに非常に役立ちます。あなたがそれを知っているかどうかわからない、ちょうど私があなたに知らせると思った。

  1. 私はあなたがJSONにアクセスするためのフィドルを設定する方法に問題があった私はちょうどあなたのJSONローカル変数作って、jsfiddleは要求をブロックしました。 (あなたがjsFiddleからあなたのJSONに要求を行う傾ける理由です。 jQuery xml error ' No 'Access-Control-Allow-Origin' header is present on the requested resource.'

  2. 決算ブラケットでいくつかの問題にもありました。

  3. q4とq5の2つの変数がありますが、これは決して定義しません。私はちょうど彼らに価値を与えましたが、私はあなたが彼らが意図したものを確信していません。

ここに新しいjsFiddleがあります。 https://jsfiddle.net/AlmondSeason/xd71kwyg/

そして私はStackOverflowのためにJavaScriptを投稿します。

$(document).ready(function() { 

    var questionNumber = 0; 
    var wordNumber = 0; 
    var questionBank = new Array(); 
    var wordsBank = new Array(); 
    var stage = "#game1"; 
    var stage2 = new Object; 
    var questionLock = false; 
    var numberOfQuestions; 
    var score = 0; 

    var data = { 
    "quizlist": [ 

     { 
     "question": "How much is two plus two?", 
     "option1": "Four", 
     "option2": "Five", 
     "option3": "Two", 
     "wordsEN": "two", 
     "wordsPT": "dois" 
     }, { 
     "question": "Selecione a sentença correta", 
     "option1": "I am a person", 
     "option2": "I is a person", 
     "option3": "I are a person", 
     "wordsEN": "people", 
     "wordsPT": "pessoas" 
     }, { 
     "question": "Select the correct form in the interrogative", 
     "option1": "Are you a student?", 
     "option2": "Is you a student?", 
     "option3": "You are a student?", 
     "wordsEN": "teacher", 
     "wordsPT": "professor(a)" 
     }, { 
     "question": "How much is one minus one?", 
     "option1": "Zero", 
     "option2": "Two", 
     "option3": "Four", 
     "wordsEN": "ten", 
     "wordsPT": "dez" 
     }, { 
     "question": "He/She/It usam o verbo To Be ...", 
     "option1": "is", 
     "option2": "are", 
     "option3": "am", 
     "wordsEN": "Two", 
     "wordsPT": "Dois" 
     }, { 
     "question": "Selecione a frase correta na afirmativa", 
     "option1": "We are here.", 
     "option2": "Are we here.", 
     "option3": "We are not here.", 
     "wordsEN": "Two", 
     "wordsPT": "Dois" 
     }, { 
     "question": "Selecione a forma correta na negativa", 
     "option1": "He is not here.", 
     "option2": "He is not here?", 
     "option3": "He are not here.", 
     "wordsEN": "Two", 
     "wordsPT": "Dois" 
     }, { 
     "question": "You/We/They usam o Verbo To Be ...", 
     "option1": "are", 
     "option2": "am", 
     "option3": "is", 
     "wordsEN": "Two", 
     "wordsPT": "Dois" 
     } 

    ] 
    }; 
    numberOfQuestions = data.quizlist.length; 
    for (i = 0; i < numberOfQuestions; i++) { 
    questionBank[i] = []; 
    questionBank[i].push(data.quizlist[i].question); 
    questionBank[i].push(data.quizlist[i].option1); 
    questionBank[i].push(data.quizlist[i].option2); 
    questionBank[i].push(data.quizlist[i].option3); 
    } 



    data = { 
    "quizlist": [ 

     { 
     "wordsEN": "two", 
     "wordsPT": "three" 
     }, { 
     "wordsEN": "people", 
     "wordsPT": "person" 
     }, { 
     "wordsEN": "teacher", 
     "wordsPT": "teachers" 
     }, { 

     "wordsEN": "ten", 
     "wordsPT": "eleven" 
     }, { 

     "wordsEN": "Five", 
     "wordsPT": "Two" 
     }, { 

     "wordsEN": "Seven", 
     "wordsPT": "One" 
     }, { 

     "wordsEN": "Five", 
     "wordsPT": "Three" 
     }, { 

     "wordsEN": "house", 
     "wordsPT": "bathroom" 
     } 

    ] 
    }; 
    numberOfWords = data.quizlist.length; 
    for (i = 0; i < numberOfWords; i++) { 
    wordsBank[i] = []; 
    wordsBank[i].push(data.quizlist[0].words1); 
    wordsBank[i].push(data.quizlist[1].words2); 
    } 
    displayQuestion(); 
    //gtjson 



    //Display question and word, if correct 
    function displayQuestion() { 
    var q5 = "What is q5 supposed to be"; 
    var q4 = "What is q4 supposed to be"; 
    //separate div that is the container of words.json 
    var wordsShow = $('<div class= "center_txt"><div id="1">' + q5 + '</div><div id="2">' + q4 + '</div></div>') 

    var rnd = Math.random() * 3; 
    rnd = Math.ceil(rnd); 
    var q1; 
    var q2; 
    var q3; 

    if (rnd == 1) { 
     q1 = questionBank[questionNumber][1]; 
     q2 = questionBank[questionNumber][2]; 
     q3 = questionBank[questionNumber][3]; 
    } 
    if (rnd == 2) { 
     q2 = questionBank[questionNumber][1]; 
     q3 = questionBank[questionNumber][2]; 
     q1 = questionBank[questionNumber][3]; 
    } 
    if (rnd == 3) { 
     q3 = questionBank[questionNumber][1]; 
     q1 = questionBank[questionNumber][2]; 
     q2 = questionBank[questionNumber][3]; 
    } 

    //show the options 
    $(stage).append('<div class="questionText">' + questionBank[questionNumber][0] + '</div><div id="1" class="option">' + q1 + '</div><div id="2" class="option">' + q2 + '</div><div id="3" class="option">' + q3 + '</div>'); 

    $('.option').click(function() { 
     if (questionLock == false) { 
     questionLock = true; 
     //correct answer 

     //show the word from words.json 
     $("#words").append(wordsShow); 

     if (this.id == rnd) { 
      $(stage).append('<div class="feedback1">CORRECT</div>'); 
      score++; 
     } 
     //wrong answer 
     if (this.id != rnd) { 
      $(stage).append('<div class="feedback2">WRONG</div>'); 
     } 
     setTimeout(function() { 
      changeQuestion() 
     }, 1000); 
     } 
    }) 
    } //display question 






    function changeQuestion() { 

    questionNumber++; 

    if (stage == "#game1") { 
     stage2 = "#game1"; 
     stage = "#game2"; 
    } else { 
     stage2 = "#game2"; 
     stage = "#game1"; 
    } 

    if (questionNumber < numberOfQuestions) { 
     displayQuestion(); 
    } else { 
     displayFinalSlide(); 
    } 

    $(stage2).animate({ 
     "right": "+=800px" 
    }, "slow", function() { 
     $(stage2).css('right', '-800px'); 
     $(stage2).empty(); 
    }); 
    $(stage).animate({ 
     "right": "+=800px" 
    }, "slow", function() { 
     questionLock = false; 
    }); 
    } //change question 
}); 



//doc ready 

編集:

がゲームdiv要素の子ではありませんdivの言葉ように、あなたのDOMを変更

。あなたがゲームのdivに追加すると、そのdivの単語を含む、そのdivのすべての子を破壊しています。これに

<div id="game1"> 
<div id="words1"></div> 
</div> 
<div id="game2"> 
<div id="words2"></div> 
</div> 

<div id="game1"></div> 
<div id="words"></div> 

<div id="game2"></div> 
<div id="words2"></div> 

ここで確認するための別のフィドルだこの

変更。 https://jsfiddle.net/xd71kwyg/2/ 他のディビジョンを破壊したいときや、それをどうしたいと思っているかを理解できるようにします。

+0

ありがとう@アーモンド。はい、私は開発者のツールを知っています。実際、それは私のPC上で動作していたが、私はJSfiddleを使用していたのは初めてだったので、私は確信が持てませんでした。とにかく q4とq5は、ユーザーが回答をクリックしたときにhtmlに.words divを入力する単語です。私は** $( '#words')を使用していました。append( '​​'); ** divの単語の値を取得していませんでした。 – spaceman

+0

編集した回答を確認してください。 – Almond

+0

これで問題が解決しましたか? – Almond

-1

これを試してみてください;)

はgetjsonのため、このコードを試してみてください。

$.getJSON('activity.json', function(data){ 
    numberOfQuestions = data.quizlist.length; 
    for(i = 0; i < numberOfQuestions; i++){ 
    questionBank[i] = []; 
    questionBank[i].push(data.quizlist[i].question); 
    questionBank[i].push(data.quizlist[i].option1); 
    questionBank[i].push(data.quizlist[i].option2); 
    questionBank[i].push(data.quizlist[i].option3); 
    }  

    $.getJSON('words.json', function(data){ 
    numberOfWords = data.quizlist.length; 
    for(i = 0; i < numberOfWords; i++){ 
     wordsBank[i] = []; 
     wordsBank[i].push(data.quizlist[0].words1); 
     wordsBank[i].push(data.quizlist[1].words2); 
    }   
    displayQuestion(); 
    }); 
}) //gtjson 
+0

ありがとうございます@ itzmukeshy7しかし、それでもdidn仕事はありません。私はそれをすべてアップロードしました。(https://jsfiddle.net/matheusloures/2mcs4d9x/1/) – spaceman

+0

@MathLouresあなたはコンソールをチェックして、あなたがそこに着いているエラーを共有しています。 – itzmukeshy7

関連する問題