2016-05-16 14 views
1

Ich versuche, ein kleines Quiz-Programm in JavaScript zu erstellen. Alle Fragen sind in einem Array enthalten, und jede Frage ist ein Objekt, das die Frage selbst enthält, Auswahlmöglichkeiten für den Benutzer zur Auswahl und Antwort. Quiz führt eine Schleife durch das Array mit allen Fragen und druckt die Frage und die Optionen aus, aus denen der Benutzer auswählen kann. Ich möchte eine Auswahl an Radioknöpfen haben. Ich kämpfe, um herauszufinden, wie Radioknöpfe mit dem Fragewahltext bevölkert werden. Irgendeine Idee wie kann man das bitte machen?Speichern von Quizfragen in Array von Objekten

 var userChoices = document.getElementsByTagName('input[type:radio]'); 
 
     var questions = 
 
     [ 
 
     { 
 
      question: "What is the capital of United Kingdom?", 
 
      choices: ["Manchester", "Birmingham", "London", "Birmingham"], 
 
      answer: 2 
 
     }, 
 
     
 
     { 
 
      question: "What is the capital of United States?", 
 
      choices: ["California", "New York", "Miami", "Florida"], 
 
      answer: 1 
 
     } 
 
     
 
     
 
     ]; 
 
     
 
     for (var i = 0; i < questions.length; i++) { 
 
     var question = questions[i].question; 
 
     document.write (question); 
 
     var options = questions[i].choices; 
 
     for (var opt in options) { 
 
      for (var radios in userChoices) { 
 
      userChoices[radios].value = options[opt]; 
 
       
 
      } 
 
     } 
 
     
 
     }
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <meta name="viewport" content="width=device-width"> 
 
    <title>JS Bin</title> 
 
</head> 
 
<body> 
 
    
 
    <input type="radio" name="choices"><br> 
 
    <input type="radio" name="choices"><br> 
 
    <input type="radio" name="choices"><br> 
 
    <input type="radio" name="choices"><br> 
 
    
 
    </body> 
 
</html>

+0

Haben Sie schon gehört von Angularjs? Ich denke, es wird dir helfen – yossico

+0

@yossico: Denkst du nicht, dass "Angular" zu groß dafür ist? –

+0

Können Sie ein JSFiddle-Beispiel bereitstellen, damit ich Ihnen helfen kann? –

Antwort

1

Sie können Ihre JS-Code wie unten vereinfachen:

 var questions = 
 
     [ 
 
     { 
 
      question: "What is the capital of United Kingdom?", 
 
      choices: ["Manchester", "Birmingham", "London", "Birmingham"], 
 
      answer: 2 
 
     }, 
 
     
 
     { 
 
      question: "What is the capital of United States?", 
 
      choices: ["California", "New York", "Miami", "Florida"], 
 
      answer: 1 
 
     } 
 
     
 
     
 
     ]; 
 
     
 
     for (var i = 0; i < questions.length; i++) { 
 
     var question = questions[i].question; 
 
     document.write (question); 
 
     var options = questions[i].choices; 
 
     document.body.appendChild(document.createElement("br")); 
 
     var name = "radio"+i; 
 
     for (var opt in options) { 
 
     
 
      var radioEle = document.createElement("input"); 
 
      radioEle.type = "radio";   
 
      radioEle.value = options[opt]; 
 
      radioEle.name = name; 
 
      document.body.appendChild(radioEle); 
 
      var label = document.createElement("Label"); 
 
      label.innerHTML = options[opt]; 
 
      document.body.appendChild(label); 
 
      document.body.appendChild(document.createElement("br")); 
 
     } 
 
     
 
     document.body.appendChild(document.createElement("br")); 
 
     
 
     }

1

Wenn Sie mehr Erklärung muss ich es schaffen wird.

<script> 

    window.onload = function() { 

     var questions = 
     [ 
     { 
      question: "What is the capital of United Kingdom?", 
      choices: ["Manchester", "Birmingham", "London", "Birmingham"], 
      answer: 2 
     }, 

     { 
      question: "What is the capital of United States?", 
      choices: ["California", "New York", "Miami", "Florida"], 
      answer: 1 
     } 


     ]; 

     var container = document.getElementById('container'); 
     for (var i = 0; i < questions.length; i++) { 
      var questionContainer = document.createElement('DIV'); 
      questionContainer.textContent = questions[i].question; 

      var options = questions[i].choices; 
      for (var opt in options) { 
       //create radiobutton 
       //append radiobutton to a div 
      } 
      container.appendChild(questionContainer); 
     } 
    }; 
</script> 
+0

Ihre Lösung ist für mich ziemlich verständlich. Meine Hauptprobleme sind, wenn ich versuche, die Optionsfelder für solche Optionen zu füllen> radiobutton.value = Auswahl [i]; es funktioniert nicht. Kannst du bitte wie kann ich Auswahlmöglichkeiten Text Radio-Buttons hinzufügen. Danke – knight

+0

Optionsfeld hat ein Wertattribut, aber kein Textattribut. Sie fügen Text neben dem Radiobutton in einem Bereich oder einfach als nächstes an. Erste Wahl

+0

Deshalb verwende ich radio.value = options [i]; aber es funktioniert nicht aus irgendeinem Grund. – knight

Verwandte Themen