2017-05-20 3 views
0

これは私が尋ねた以前の質問のように聞こえるかもしれませんが、それは部分的にしか答えられませんでした。だから私は私がそれに行き始めるように尋ねた質問に行きたいです。その後、最後の質問(#5)に達すると、最初の質問(#1)に戻り、開始質問に達すると停止します。私は次のコードでこれを実行しようとしましたが、うまくいかないでしょう。私は11歳で、約9ヶ月前にプログラミングを始めました。Javascriptクイズので、それは完全な質問のsycleに達するときに停止する

<!DOCTYPE html> 
<html> 

    <head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <title>Are you smarter than a 5th Grader?!!</title> 
    <link rel="stylesheet" href="style.css"> 
    </head> 

    <body onload="starter()" bgcolor="lightblue"> 
    <h1><marquee><font color="red">Make Trivia Great Again!</font></marquee></h1> 
    <h2><em><center>Are You Smater Than a 5th Grader?</center></em></h2> 
    <button onclick="sc()">Start</button> 
    <br> 
    <p id="demo"> </p> 
    <div id="result"></div> 
    <button onclick="reset()">Reset Score</button> 
    <script> 
     function starter() { 
     setTimeout("clickCounter()", 100) 
     setTimeout("minusCounter()", 101) 
     } 

     function reset() { 
     setTimeout("clickCounter()", 100) 
     localStorage.clickcount = -1 

     } 

     function clickCounter() { 
     if (typeof(Storage) !== "undefined") { 

      if (localStorage.clickcount) { 
      localStorage.clickcount = Number(localStorage.clickcount) + 1; 
      } else { 
      localStorage.clickcount = 0; 
      } 
      document.getElementById("result").innerHTML = "Score:" + localStorage.clickcount 
     } else {} 
     } 

     function minusCounter() { 

     if (typeof(Storage) !== "undefined") { 

      if (localStorage.clickcount) { 
      localStorage.clickcount = Number(localStorage.clickcount) - 1; 
      } else { 
      localStorage.clickcount = 0; 
      } 
      document.getElementById("result").innerHTML = "Score:" + localStorage.clickcount 
     } else {} 
     } 

     if (!("scramble" in Array.prototype)) { 
     Object.defineProperty(Array.prototype, "scramble", { 
      enumerable: false, 
      value: function() { 
      var o, i, ln = this.length; 
      while (ln--) { 
       i = Math.random() * (ln + 1) | 0; 
       o = this[ln]; 
       this[ln] = this[i]; 
       this[i] = o; 
      } 
      return this; 


      } 
     }); 
     } 
     var quiz = [{ 
     "question": "When was the first apple computer made?", 
     "choices": ["1904", "1976", "1978", "2004"], 
     "correct": ["1976"] 
     }, { 
     "question": "Who is the founder of Microsoft?", 
     "choices": ["Bill Gates", "Steve Jobs", "Steve Wozniak", "Martin Shaba"], 
     "correct": "Bill Gates" 
     }, { 
     "question": "What was your first dream?", 
     "choices": ["8 bits", "64 bits", "1024 bits"], 
     "correct": "8 bits" 
     }, { 
     "question": "The C programming language was developed by?", 
     "choices": ["Brendan Eich", "Dennis Ritchie", "Guido van Rossum"], 
     "correct": "Dennis Ritchie" 
     }, { 
     "question": "What does CC mean in emails?", 
     "choices": ["Carbon Copy", "Creative Commons", "other"], 
     "correct": "Carbon Copy" 
     }, { 
     "question": "What is the full for of IP", 
     "choices": ["Internet provider", "Intenet Port", "Other", "Internet Protocol"], 
     "correct": "Other" 
     }] 

     function stop() { 
     alert("stopped") 
     } 

     function setter() { 
     for (x = 1; x < 7; x++) { 
      uc() 
     } 
     } 

     function sc() { 
     var q = prompt("start question #", "") 
     if (q >= 6) { 
      alert("please pick a valid question") 
      sc() 
     } else if (q <= 5 && q > 0) { 
      ec() 
     } else if (q == 0) { 
      alert("please pick a valid question") 
      sc() 
      return; 

     } else { 
      alert("Please pick a valid question"), sc() 
     } 

     function ec() { 
      for (x = q; x < 7; x++) { 
      if (x == 6) { 
       setter() 

      } else if (x == x) { 
       return; 
      } else { 
       uc() 
      } 
      } 

      function uc() { 
      quiz.forEach(q => q.choices.scramble()); 
      var ans = "" 

      function myFunction(item, index) { 
       ans += "\n[" + (index + 1) + "]: " + item; 
      } 
      quiz[x].choices.forEach(myFunction); 
      var y = prompt(quiz[x].question + "\nYour anwser is:" + ans); 
      if (y == quiz[x].correct) { 
       alert("Correct!") 
       clickCounter() 
      } else if (y == "Cancel") { 
       alert("canceled") 
       page.reload() 
      } else { 
       alert("Wrong! Please Try Again."); 
       repeat() 
      } 

      function repeat() { 
       quiz.forEach(q => q.choices.scramble()); 
       var ans = "" 

       function myFunction(item, index) { 
       ans += "\n[" + (index + 1) + "]: " + item; 
       } 
       quiz[x].choices.forEach(myFunction); 
       var y = prompt(quiz[x].question + "\nYour anwser is:" + ans); 
       if (y == quiz[x].correct) { 
       alert("Correct!,Good Job") 
       clickCounter() 
       } else if (y == "Cancel") { 
       alert("canceled") 
       } else { 
       alert("Sorry! \nThe right answer is " + quiz[x].correct); 
       } 
      } 
      } 
     } 
     } 

    </script> 


    </body> 

</html> 

答えて

2

非常に印象的な11歳のコーディング。ここで直面している問題は、関数と可変スコープです。関数は他の関数の中に入れ子にされていてはいけません。また、他の関数で使用されている変数を使用している場合は、それをグローバルに宣言する必要があります(ただし、時には悪い考えかもしれません)。

ここでスタートスコープについての詳細を学ぶために:https://www.w3schools.com/js/js_scope.asp

コーディングをしてください:)

をあなたのコードを以下に固定されている:

<!DOCTYPE html> 
<html> 

    <head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
    <title>Are you smarter than a 5th Grader?!!</title> 
    <link rel="stylesheet" href="style.css"> 
    </head> 

    <body onload="starter()" bgcolor="lightblue"> 
    <h1><marquee><font color="red">Make Trivia Great Again!</font></marquee></h1> 
    <h2><em><center>Are You Smater Than a 5th Grader?</center></em></h2> 
    <button onclick="sc()">Start</button> 
    <br> 
    <p id="demo"> </p> 
    <div id="result"></div> 
    <button onclick="reset()">Reset Score</button> 
    <script> 

     function starter() { 
      setTimeout("clickCounter()", 100) 
      setTimeout("minusCounter()", 101) 
     } 

     function reset() { 
      setTimeout("clickCounter()", 100) 
      localStorage.clickcount = -1 

     } 

     function clickCounter() { 
      if (typeof(Storage) !== "undefined") { 

       if (localStorage.clickcount) { 
       localStorage.clickcount = Number(localStorage.clickcount) + 1; 
       } else { 
       localStorage.clickcount = 0; 
       } 
       document.getElementById("result").innerHTML = "Score:" + localStorage.clickcount 
      } else {} 
     } 

     function minusCounter() { 

      if (typeof(Storage) !== "undefined") { 

       if (localStorage.clickcount) { 
        localStorage.clickcount = Number(localStorage.clickcount) - 1; 
       } 
       else { 
        localStorage.clickcount = 0; 
       } 

       document.getElementById("result").innerHTML = "Score:" + localStorage.clickcount 
      } else { 

      } 
     } 

     if (!("scramble" in Array.prototype)) { 
      Object.defineProperty(Array.prototype, "scramble", { 
       enumerable: false, 
       value: function() { 
       var o, i, ln = this.length; 
       while (ln--) { 
        i = Math.random() * (ln + 1) | 0; 
        o = this[ln]; 
        this[ln] = this[i]; 
        this[i] = o; 
       } 
       return this; 


       } 
      }); 
     } 

     var quiz = [{ 
      "question": "When was the first apple computer made?", 
      "choices": ["1904", "1976", "1978", "2004"], 
      "correct": ["1976"] 
      }, { 
      "question": "Who is the founder of Microsoft?", 
      "choices": ["Bill Gates", "Steve Jobs", "Steve Wozniak", "Martin Shaba"], 
      "correct": "Bill Gates" 
      }, { 
      "question": "What was your first dream?", 
      "choices": ["8 bits", "64 bits", "1024 bits"], 
      "correct": "8 bits" 
      }, { 
      "question": "The C programming language was developed by?", 
      "choices": ["Brendan Eich", "Dennis Ritchie", "Guido van Rossum"], 
      "correct": "Dennis Ritchie" 
      }, { 
      "question": "What does CC mean in emails?", 
      "choices": ["Carbon Copy", "Creative Commons", "other"], 
      "correct": "Carbon Copy" 
      }, { 
      "question": "What is the full for of IP", 
      "choices": ["Internet provider", "Intenet Port", "Other", "Internet Protocol"], 
      "correct": "Other" 
      }]; 

     function stop() { 
      alert("stopped") 
     } 

     function setter() { 
      for (x = 1; x < 7; x++) { 
       uc(); 
      } 
     } 


     var q; 
     function sc() { 
      q = prompt("start question #", "") 
      if (q >= 6) { 
       alert("please pick a valid question") 
       sc() 
      } else if (q <= 5 && q > 0) { 
       ec() 
      } else if (q == 0) { 
       alert("please pick a valid question") 
       sc() 
       return; 

      } else { 
       alert("Please pick a valid question"), sc() 
      } 
     } 

     var x; 
     function ec() { 
      console.log('ec'); 
      for (x = q; x < 7; x++) { 
       if (x == 6) { 
        setter() 

        //} else if (x == x) { 
        // return; 
       } else { 
         uc() 
       } 
      } 
     } 

     function uc() { 
      console.log('uc'); 
      quiz.forEach(q => q.choices.scramble()); 
      var ans = "" 

      function myFunction(item, index) { 
       ans += "\n[" + (index + 1) + "]: " + item; 
      } 
      quiz[x].choices.forEach(myFunction); 
      var y = prompt(quiz[x].question + "\nYour anwser is:" + ans); 
      if (y == quiz[x].correct) { 
       alert("Correct!") 
       clickCounter() 
      } else if (y == "Cancel") { 
       alert("canceled") 
       page.reload() 
      } else { 
       alert("Wrong! Please Try Again."); 
       repeat() 
      } 
     } 

     function repeat() { 
      quiz.forEach(q => q.choices.scramble()); 
      var ans = "" 

      function myFunction(item, index) { 
      ans += "\n[" + (index + 1) + "]: " + item; 
      } 
      quiz[x].choices.forEach(myFunction); 
      var y = prompt(quiz[x].question + "\nYour anwser is:" + ans); 
      console.log(y); 
      console.log(quiz[x].correct); 
      if (y == quiz[x].correct) { 
       alert("Correct!,Good Job") 
       clickCounter() 
      } else if (y == "Cancel") { 
       alert("canceled") 
      } else { 
       alert("Sorry! \nThe right answer is " + quiz[x].correct); 
      } 
     } 


    </script> 


    </body> 

</html> 
+0

は秀ありがとうございました – HyperMonkey

関連する問題