Javascript 如何将单选按钮式测验的答案保存到firebase数据库,即使某些答案未选中

Javascript 如何将单选按钮式测验的答案保存到firebase数据库,即使某些答案未选中,javascript,html,Javascript,Html,我有这个密码 常数…=document.querySelector ('input[name=“…”]:选中')。值 而且它只在选中所有单选按钮选项时才起作用。如何保存答案,即使某些答案未选中 我试过去掉“:checked”,但它只是为所有人保存了第一个选项,即使我选择了不同的一次。 然后,我尝试了以下操作: 常数=document.querySelectorAll('input[name=“…”]:not(:checked)')) 但结果却并非如此。有谁能给我一些建议,如何使这项工作 一个问题

我有这个密码

常数…=document.querySelector ('input[name=“…”]:选中')。值

而且它只在选中所有单选按钮选项时才起作用。如何保存答案,即使某些答案未选中

我试过去掉“:checked”,但它只是为所有人保存了第一个选项,即使我选择了不同的一次。 然后,我尝试了以下操作:

常数=document.querySelectorAll('input[name=“…”]:not(:checked)'))

但结果却并非如此。有谁能给我一些建议,如何使这项工作

一个问题的html示例


您可能希望通过querySelector获得所有复选框,然后检查选中的复选框和未选中的复选框。我用它添加了两个函数,您可以只运行一个for循环并执行相同的逻辑

函数getUncheckedValues(){ 常量obj={}; Array.from(document.querySelectorAll('input[type=“radio”]”) .forEach((复选框)=>{ obj[checkbox.value]=checkbox.checked }); 控制台日志(obj); 返回obj; } const resultEl=document.getElementById('checkedresult'); const resultUncheckEl=document.getElementById('uncheckedresult'); document.getElementById('showResult')。addEventListener('click',()=>{ 常量值=getUncheckedValues(); console.log(值); const newRef=firebase.database().ref('messages').push(); newRef.set(值); });
图像1


图2


图3


图4


图5




显示选中的值


以下是基本的代码片段。这有助于你扫清道路。只需复制下面的代码

<div id="question1"  style="position:fixed; left:20px; top: 50px;">           
    <label>  <input type="radio" name="q0" value="a1" id="a1" class="radio" onchange="checkAns()"> IMAGE 1 <br><br><br> </label>
    <label>  <input type="radio" name="q0" value="a2" id="a2" class="radio" onchange="checkAns()"> IMAGE 2 <br><br><br> </label>
    <label>  <input type="radio" name="q0" value="a3" id="a3" class="radio" onchange="checkAns()"> IMAGE 3 <br><br><br> </label>
    <label>  <input type="radio" name="q0" value="a4" id="a4" class="radio" onchange="checkAns()"> IMAGE 4 <br><br><br> </label>
    <label>  <input type="radio" name="q0" value="a5" id="a5" class="radio" onchange="checkAns()"> IMAGE 5 <br><br><br> </label>
    <button id="btn" disabled>Button</button> 
</div>

<script>
    var a1 = document.getElementById('a1');
    var a2 = document.getElementById('a2');
    var a3 = document.getElementById('a3');
    var a4 = document.getElementById('a4');
    var a5 = document.getElementById('a5');

    function checkAns(){
        console.log(a1.checked, a2, a3, a4, a5);
        if (a1.checked || a2.checked || a3.checked || a4.checked || a5.checked) {
            document.getElementById("btn").disabled = false; 
        }
    }
</script>

图1


图2


图3


图4


图5


按钮 var a1=document.getElementById('a1'); var a2=document.getElementById('a2'); var a3=document.getElementById('a3'); var a4=document.getElementById('a4'); var a5=document.getElementById('a5'); 函数checkAns(){ 控制台日志(a1、a2、a3、a4、a5); 如果(a1.选中| | a2.选中| | a3.选中| | a4.选中| | a5.选中){ document.getElementById(“btn”).disabled=false; } }

这可能会有所帮助。

您到底想做什么?您是否试图将具有特定
名称的所有复选框中的所有值获取到一个数组中?请添加一些实际代码。所以我能理解。添加html代码段。基本上我有一个10个问题的测验。每个问题都有自己的“名称”和5个选项可供选择。问题是,如果不回答至少一个问题(意思是不要为一个问题选择单选按钮),提交按钮会阻塞,不允许我提交答案。同样,问题每30秒会改变一次,如果之前的问题没有回答,就不可能回答。@Mayur添加了js和html@subwendu Kundu,非常感谢!我使用了你告诉我的答案,但它只保存了第一个答案,即使我选择了另一个。。我做错了什么?@subwendu Kundu,不幸的是,它不起作用(.它只给了我问题的选项列表,而不是答案。。。(这只是给大家提个醒,如果你看到逻辑,你就会看到真正的boo给了你答案。现在你需要按照你想要的方式修改数据格式。
a1:a1,a2:a2,a3:a3,a4:a4,a5:a5,
在这里,你如何找到哪一个被选中?@subpendu Kundu我记得哪一个代表哪一个,当在f中时我记得这是第三个选项。这些选项是由一个人选择的
firebase.initializeApp(config);


var messagesRef = firebase.database().ref('messages');


document.getElementById('contactForm').addEventListener('submit', submitForm);


function submitForm(e){   e.preventDefault();



  var a1 = getInputVal ('a1');   var a2 = getInputVal ('a2');   var a3
= getInputVal ('a3');   var a4 = getInputVal ('a4');   var a5 = getInputVal ('a5');





  saveMessage( a1, a2, a3,a4,a5);


  document.querySelector('.alert').style.display = 'block';


  setTimeout(function(){
    document.querySelector('.alert').style.display = 'none';   },8000);


  document.getElementById('contactForm').reset(); }

function getInputVal(id){   return document.getElementById(id).value; }


function saveMessage( a1, a2, a3,a4,a5){   var newMessageRef = messagesRef.push();   newMessageRef.set({

    a1:a1,
    a2:a2,
    a3:a3,
    a4:a4,
    a5:a5,


  }); }

function saveMessage(){   const q1 = document.querySelector('input[name="q1"]:checked').value;
<div id="question1"  style="position:fixed; left:20px; top: 50px;">           
    <label>  <input type="radio" name="q0" value="a1" id="a1" class="radio" onchange="checkAns()"> IMAGE 1 <br><br><br> </label>
    <label>  <input type="radio" name="q0" value="a2" id="a2" class="radio" onchange="checkAns()"> IMAGE 2 <br><br><br> </label>
    <label>  <input type="radio" name="q0" value="a3" id="a3" class="radio" onchange="checkAns()"> IMAGE 3 <br><br><br> </label>
    <label>  <input type="radio" name="q0" value="a4" id="a4" class="radio" onchange="checkAns()"> IMAGE 4 <br><br><br> </label>
    <label>  <input type="radio" name="q0" value="a5" id="a5" class="radio" onchange="checkAns()"> IMAGE 5 <br><br><br> </label>
    <button id="btn" disabled>Button</button> 
</div>

<script>
    var a1 = document.getElementById('a1');
    var a2 = document.getElementById('a2');
    var a3 = document.getElementById('a3');
    var a4 = document.getElementById('a4');
    var a5 = document.getElementById('a5');

    function checkAns(){
        console.log(a1.checked, a2, a3, a4, a5);
        if (a1.checked || a2.checked || a3.checked || a4.checked || a5.checked) {
            document.getElementById("btn").disabled = false; 
        }
    }
</script>