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