使用JavaScript检查单选按钮状态

使用JavaScript检查单选按钮状态,javascript,html,forms,validation,Javascript,Html,Forms,Validation,我为一个活动做了一张表格。单击第一个单选按钮,然后单击提交。警告信息消失,但是,如果单击第二个单选按钮,则警告不会消失。我的问题是某些功能不适合这种情况?我如何修改它?我们使用什么样的情况下一些函数?谢谢大家! const form=document.querySelector('.apply\u form'); 函数createWarning(节点){ //如果没有警告消息,则创建一个 if(!node.querySelectorAll('.warning__style').length){

我为一个活动做了一张表格。单击第一个单选按钮,然后单击提交。警告信息消失,但是,如果单击第二个单选按钮,则警告不会消失。我的问题是
某些
功能不适合这种情况?我如何修改它?我们使用什么样的情况下
一些
函数?谢谢大家!

const form=document.querySelector('.apply\u form');
函数createWarning(节点){
//如果没有警告消息,则创建一个
if(!node.querySelectorAll('.warning__style').length){
const warning__msg=document.createElement('p');
警告__msg.innerHTML='请填写';
warning__msg.classList.add('warning__style');
node.appendChild(警告消息);
}
}
form.addEventListener('submit',e=>{
e、 预防默认值();
让结果=[];
//检查姓名、电话、电子邮件和资源的所需答案
const reqAns=document.queryselectoral('.required.answer');
常量请求数组=[…请求];
reqAnsArray.map(元素=>{
如果(element.value==“”){
createWarning(element.parentElement);
}
if(element.value&&element.parentElement.querySelectorAll('.warning\uu style').length){
element.parentElement.lastChild.classList.add('warning\u demouse')
}
结果推送(元素值)
})
//检查申请事件类型的所需答案
const reqChoice=document.querySelectorAll('.required input[type=radio]');
常量reqChoiceArray=[…reqChoice];
reqChoiceArray.some(元素=>{
如果(!element.checked){
createWarning(element.parentElement.parentElement);
}
if(element.checked&&element.parentElement.parentElement.querySelectorAll('.warning\u style').length){
element.parentElement.parentElement.lastChild.classList.add('warning\u demouse')
}
})
})
body,html{
框大小:边框框;
字体大小:16px;
}
.包装纸{
宽度:100%;
背景:#f0;
填充:30px0;
}
.申请表格{
边框顶部:8px实心#f00;
保证金:0自动;
最大宽度:645px;
背景:#fff;
填充:50px;
}
.表格标题{
字体:普通粗体1.8rem“Microsoft JhengHei”;
}
.事件信息{
保证金:2rem 0;
字体:普通0.9rem“微软正黑”;
}
.事件信息.事件地点{
边缘顶部:0.5雷姆;
}
.通知{
颜色:#e74149;
字体:normal 1rem“微软正黑”;
}
.通知::之前{
内容:“*”;
右侧填充:5px;
}
.问题{
宽度:100%;
}
.问题{
字体:normal 1rem“微软正黑”;
边缘顶部:50px;
}
.问题.问题标题{
边缘底部:20px;
}
.问题.问题标题::之后{
内容:“*”;
颜色:#e74149;
左侧填充:5px;
}
.问题:第n个孩子(4).类型1{
边缘底部:23px;
}
问题:第n个孩子(6)。问题标题::之后{
内容:无;
}
.副标题{
边缘底部:30px;
}
.问题.回答{
宽度:250px;
填充物:5px;
}
.按钮部分{
边缘顶部:55px;
字体:normal 1rem“微软正黑”;
}
.提交{
背景:#fad312;
边界半径:3px;
大纲:无;
边界:无;
填充:1rem2rem;
边缘底部:20px;
光标:指针;
}
.警告{
字体大小:14px;
}
.好的{
高度:30px;
背景:#000;
颜色:#999;
文本对齐:居中;
填充:15px0;
线高:30px;
字体系列:“MicrosoftJhenghei”;
}
.警告式{
颜色:#e74149;
字体大小:14px;
位置:绝对位置;
}
.警告消失{
显示:无;
}
.格式错误{
边框:1px实心#f00;
}

懒态
ABC表格
事件时间

事件地点

必须 尼克的名字

电子邮件

电话

类型

床 电话 你是怎么知道的

其他


我在这里看到两个潜在问题。您正在使用querySelectorAll,它返回一个静态节点列表。但这不应该是这里的问题,只是一些你需要注意的事情。 你用错了某种方法。 您需要给它一个函数来检查每个元素并返回true或false。 如果任何元素匹配,some方法将作为一个整体返回true。 所以,它看起来应该更像。(下面的元素不正确,但我希望你能理解。)


谢谢你的反馈。我不明白你为什么说静态节点列表是一个潜在的问题。所以,对于某些方法,我需要发送一个函数。如果有“真”在整个数据中,结果是真的,否则结果是假的?@Oscar在这种情况下不是。你只需要小心点。如果您在节点上更改了某些内容并使用了静态节点列表,则更改不会出现在静态节点列表中。如果其中一个元素返回true,则该方法返回true。如果全部为false,则返回false。看见
var response = reqChoiceArray.some(element => {
    if (!element.checked) {
      return false;
    }
    if (element.checked && element.parentElement.parentElement.querySelectorAll('.warning__style').length) {
      return true;
    }
  })

if(!!response){
    element.parentElement.parentElement.lastChild.classList.add('warning__disappear');
}else{
    createWarning(element.parentElement.parentElement);
}