2017-04-20 18 views
0

私のクイズの最初の質問に残りの質問とは独立したラジオボタンがあるのはなぜかと思っていますが、質問1の後にすべての質問がラジオボタングループとして機能しますか? これはjavascriptのです:なぜこれらのラジオボタンはJavaScriptを使用して動作しますか?

window.onload = getQuizXml; 

function getQuizXml() { 
    var quiz = new XMLHttpRequest(); 
    quiz.onreadystatechange = function() { 
    if (quiz.readyState == 4 && quiz.status == 200) { 
     searchQuiz(quiz); 


    } 
    }; 
    quiz.open("GET", "FinalQuiz.xml", true); 
    quiz.send(); 

} 

function searchQuiz(quiz) { 

    var i; 
    //get data as xml file 
    var xmldoc = quiz.responseXML; 
    var test = "<form id = 'test'>"; 
    //start table 
    //process data by record 
    var x = xmldoc.getElementsByTagName("question"); 
    var errorMessage = "Error, Well does not exist."; 
    for (i = 0; i < x.length; i++) { 

    var questionNumber = x[i].getElementsByTagName("qnumber")[0].childNodes[0].nodeValue; 
    var questionTitle = x[i].getElementsByTagName("qtitle")[0].childNodes[0].nodeValue; 
    var a = x[i].getElementsByTagName("a")[0].childNodes[0].nodeValue; 
    var b = x[i].getElementsByTagName("b")[0].childNodes[0].nodeValue; 
    var c = x[i].getElementsByTagName("c")[0].childNodes[0].nodeValue; 
    var d = x[i].getElementsByTagName("d")[0].childNodes[0].nodeValue; 

    test += "<br>" + questionNumber + "." + 
     "<br>" + 
     questionTitle + 
     "<br><br>" + 
     "a)<input type='radio' value='a' name ='question'>" + a + 
     "<br>" + 
     "b)<input type='radio' value='b' name ='question'>" + b + 
     "<br>" + 
     "c)<input type='radio' value='c' name ='question'>" + c + 
     "<br>" + 
     "d)<input type='radio' value='d' name ='question'>" + d + 
     "<br></form>"; 



    document.getElementById("displayquiz").innerHTML = test; 

    } 

} 

、これは、XMLのサンプルです:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE finalquiz SYSTEM "FinalQuiz.dtd" > 
<finalquiz> 
    <question> 
    <qnumber>1</qnumber> 
    <qtitle>In a switch statement, the ________ case clause is used to process exceptional conditions and is usually listed last.</qtitle> 
    <a>break</a> 
    <b>default</b> 
    <c>else</c> 
    <d>then</d> 
    </question> 
    <question> 
    <qnumber>2</qnumber> 
    <qtitle>The technique of developing and maintaining a large program by constructing it from small, simple pieces is called ________.</qtitle> 
    <a>divide and conquer</a> 
    <b>modular programming</b> 
    <c>multitasking</c> 
    <d>multiprogramming</d> 
    </question> 
    <question> 
    <qnumber>3</qnumber> 
    <qtitle>All variables declared in function definitions are ________.</qtitle> 
    <a>global variables</a> 
    <b>static variables</b> 
    <c>constant variables</c> 
    <d>local variables</d> 
    </question> 
+0

ラジオボタンは 'name'属性を使用してグループ化されます。私は質問1が残りの部分とは別のグループにある理由は何もわかりません。 – Barmar

+0

あなたのラジオボタンはすべて 'name = 'question''を持っているので、それらは1つのグループでなければなりません。 – Barmar

+0

ところで、ループが終了した後ではなく、ループを通過するたびに 'innerHTML'を割り当てるべきです。 – Barmar

答えて

0

私はあなたのラジオボタンは、異なるフォームセクションのラッピングによってグループ化することができると思います。文字列の追加ロジックにはバグがあります。 あなたのコードの結果は以下のようになります:

<form> 
    <input type='radio' value='a' name ='question'> 
    <input type='radio' value='b' name ='question'> 
    <input type='radio' value='c' name ='question'> 
    <input type='radio' value='d' name ='question'> 
</form> 
<!-- there is a missing form start tag(<form>) here supposed to be --> 
    <input type='radio' value='a' name ='question'> 
... 
</form> 

ので、あなたのコードは以下のように変更する必要があります。

var test = ""; 
    for (i = 0; i < x.length; i++) { 
    test += "<form id = 'test'>";   

    ... 

    test += "<br>" + questionNumber + "." + 
     "<br>" + 
     questionTitle + 
     "<br><br>" + 
     "a)<input type='radio' value='a' name ='question'>" + a + 
     "<br>" + 
     "b)<input type='radio' value='b' name ='question'>" + b + 
     "<br>" + 
     "c)<input type='radio' value='c' name ='question'>" + c + 
     "<br>" + 
     "d)<input type='radio' value='d' name ='question'>" + d + 
     "<br></form>"; 
0

name属性は、ラジオボタンを区切る/グループ化するものです。あなたは別の質問は、名前を変更するための新しいグループを作成する必要がある場合は

$_POST['question'] 

:あなたはPHPなどのサーバー側からこの見れば

値のようなものを探して、フォームのポストを通ってくるでしょうそうのような属性:すなわち

<form> 
    <div id='q1_label'>This is question 1:</div> 
    <input type='radio' value='a' name ='question1'><span>A</span><br /> 
    <input type='radio' value='b' name ='question1'><span>B</span><br /> 
    <input type='radio' value='c' name ='question1'><span>C</span><br /> 
    <input type='radio' value='d' name ='question1'><span>D</span><br /> 
    <div id='q2_label'>This is question 2:</div> 
    <input type='radio' value='a' name ='question2'><span>A</span><br /> 
    <input type='radio' value='b' name ='question2'><span>B</span><br /> 
    <input type='radio' value='c' name ='question2'><span>C</span><br /> 
    <input type='radio' value='d' name ='question2'><span>D</span><br /> 
</form> 

各群で異なる値に対する全体の理由は、そのFIEに転記値を提供することですldの名前。

$q1 = $_POST['question1']; 
$q2 = $_POST['question2']; 

、その後、解答用紙、またはそのような何かに対して渡されたデータを移動して、比較する:

サーバ側は今、このように処理することができます。

+0

@MattyD - ここにこの回答があります。[LINK HERE](https://repl.it/HSzK) –

関連する問題