2017-12-15 1 views
0

これは数学の問題を発生させるif文を実行します。ユーザーに入力したい質問の数を入力しますが、実行すると、ユーザーが最初に答えるのを待つのではなく、質問をしてinnerHTMLをクリアします。すぐにそれらを生成し、if文を使って質問に正しく答えるまで待つのをやめる方法はありますか?このスクリプトが複数回実行されずに、スクリプトが応答されるまで待機するにはどうすればよいですか?

  if(equation == "Addition(+)"){ 
       number = document.getElementById('problems').value; 

       for(var i = 0; i<number; i++){  
       var inputedanswer = 
       document.getElementById('answerfield').value; 
        //Creates addition problem 
       a = Math.floor((Math.random() * 20) + 1); 
       b = Math.floor((Math.random() * 20) + 1); 

       if(inputedanswer == null){ 
        //Trying to make it run only once 
       var answer = (parseInt(a) + parseInt(b)); 
       //Creates question using the Math Random above 
       var p = document.createElement('p'); 
       var text = document.createTextNode(a + " + " + b + " = ") 
       p.appendChild(text); 
       document.getElementById('question').appendChild(p); 
       //Creates radio buttons for answers 
       var select = document.createElement('input'); 
       var submit = document.createElement('button'); 
       document.getElementById('answerfield').appendChild(select); 
       document.getElementById('submit').appendChild(submit); 
       submit.innerHTML = "Check Answer"; 
       //Submitting answer and checks if it is correct 
      submit.onclick = function(){ 
       if(select.value != answer){ 
        alert("I am sorry but that is not the correct answer, Please try again!"); 
       } 
       else{ 
        alert("That's correct!"); 
        document.getElementById('field').innerHTML = ""; 
        //Ask Erickson 
       } 
      } 
     } 
       } 
      } 
+0

をそれらを呼び出します。今すぐあなたの問題の完全な文脈なしで助けてください。動作するコードスニペットを作成してみてください。 https://stackoverflow.com/help/mcve –

+0

ユーザーが最初の質問に答えるときに2番目の質問が表示されたら、2番目の質問に3番目の質問が表示されたら...など? –

答えて

-1

関数に入れて、質問に答えたら関数を呼び出します。

if(he answers the question) { 
    waitForQuestion(); 
} 





function waitForQuestion(){ 
      if(equation == "Addition(+)"){ 
       number = document.getElementById('problems').value; 

       for(var i = 0; i<number; i++){  
       var inputedanswer = 
       document.getElementById('answerfield').value; 
        //Creates addition problem 
       a = Math.floor((Math.random() * 20) + 1); 
       b = Math.floor((Math.random() * 20) + 1); 

       if(inputedanswer == null){ 
        //Trying to make it run only once 
       var answer = (parseInt(a) + parseInt(b)); 
       //Creates question using the Math Random above 
       var p = document.createElement('p'); 
       var text = document.createTextNode(a + " + " + b + " = ") 
       p.appendChild(text); 
       document.getElementById('question').appendChild(p); 
       //Creates radio buttons for answers 
       var select = document.createElement('input'); 
       var submit = document.createElement('button'); 
       document.getElementById('answerfield').appendChild(select); 
       document.getElementById('submit').appendChild(submit); 
       submit.innerHTML = "Check Answer"; 
       //Submitting answer and checks if it is correct 
      submit.onclick = function(){ 
       if(select.value != answer){ 
        alert("I am sorry but that is not the correct answer, Please try again!"); 
       } 
       else{ 
        alert("That's correct!"); 
        document.getElementById('field').innerHTML = ""; 
        //Ask Erickson 
       } 
      } 
     } 
       } 
      } 
} 
0

これはすべて1つの方法で行うことができますか。特定のイベントリスナーに接続されている別のメソッド(以下のリストを参照)に分割する必要があります。 ユーザーは回答の質問のリストを取得する必要がありますように私には思われる?彼が1つに答えるとき、それは正しいか間違っているとマークされるべきです。何この手順について


1)は、彼が答えることを望んでいるどのように多くの質問をユーザーに依頼
- >
2)はに従って、質問の数を準備する「のテストを開始」をクリックしてくださいユーザーの入力、HTML
に配列(1つの項目=タスク+は+ソリューション回答)
3)パースのすべての質問にそれらを保存する - >答えが与えられた時にチェックし、それが正しかったかどうか、ショーの結果

もちろん、この手順は必要に応じて変更できます。要求された質問の数を質問し、変数として保存してから質問を生成したり、HTMLとして表示したり、回答を待つか(ボタンをクリック)、回答を確認したり、解決策を提示したり、示された。

何をするにしても、それは、最小完全、かつ検証例を含めるのがベストだろう、複数の方法を使用して、ユーザが(例えば、ボタンのクリックや答えを与える)何かをする場合にのみ

関連する問題