2015-11-25 102 views
1

我想弄清楚如何選中無線電錶格中的選項來檢查和寫入控制檯。 即使選中了正確的選項,我總是收到「未選中」。 任何想法? 我寧願一個不包含JQuery的解決方案,因爲我學習了HTML和JavaScript。從單選按鈕獲取數據

謝謝!

<body> 
<form id="office"> 
    <label id="ques1"> question 1</label><br/> 
     <div class="q1 wrong q1a1"><input type="radio" name="question1" value="q1a1" /> Answer1 <br/></div> 
     <div class="q1 wrong q1a2"><input type="radio" name="question1" value="q1a2" /> Answer2 <br/></div> 
     <div class="q1 wrong q1a3"><input type="radio" name="question1" value="q1a3" /> Answer3 <br/></div> 
     <div class="q1 right q1a4"><input type="radio" name="question1" value="q1a4" /> Answer4 <br/></div> 

      <br/><br/> 

    <input type="submit" id="submit" name="submitAnswers" value="Submit Your Answers" onclick="checkFunction()" /> 


</form> 


<script type="text/javascript"> 

window.onload = function() { 

document.getElementById('submit').onclick = function() { 
if (document.querySelector('.q1 wrong q1a1').checked == true) { 
    console.log('checked'); 
} else { 
    console.log('not checked'); 
} 
}; 
}; 
</script> 
</body> 
+0

一個在代碼中錯誤的是'document.querySelector(」。Q1錯q1a1' )'將無法訪問,它會像'document.querySelector('.q1.wrong.q1a1')',但你想要的是什麼? –

回答

2

您正在檢查是否選中了<div>而不是單選按鈕。

改變這一行:

if (document.querySelector('.q1 wrong q1a1').checked == true) { 

喜歡的東西:

if (document.querySelector('input[type=radio][name=question1]').checked == true) { 
+1

...或'document.querySelector('input [name =「question1」]:checked')。value;' –

+0

@Pamblam好吧。如果還有其他'.q1a1',這可能會更好。 –

+0

非常感謝您的回答! 我嘗試了第一個選項,並得到「無法讀取屬性」選中「空」。 當我嘗試「('input [name =」question1「]:checked')」我得到了「Uncaught ReferenceError:checkFunction未定義」 任何其他選項? 謝謝 – user3185970

0

你必須要傳遞到querySelector功能選擇略有誤差。在div中的每個類名都應該加上前綴. 選擇器應該看起來像這樣.q1.wrong.q1a1。然後你就可以查找輸入那就是div中這樣.q1.wrong.q1a1 input

window.onload = function() { 
    document.getElementById('submit').onclick = function() { 
    if (document.querySelector('.q1.wrong.q1a1 input').checked == true) { 
     console.log('checked'); 
    } else { 
     console.log('not checked'); 
    } 
    } 
}