Javascript 从querySelectorAll(“输入”)中排除所有文本类型输入

Javascript 从querySelectorAll(“输入”)中排除所有文本类型输入,javascript,html,css,Javascript,Html,Css,我有以下设置,其中添加了自定义复选标记以设置单选按钮的样式。 但它也将该复选标记添加到文本类型输入中 var changed=function(){ Array.from(document.querySelectorAll(“表”)).forEach((元素,索引)=> { Array.from(element.querySelectorAll(“输入”)).forEach((myinp,index)=> { if(myinp.checked==true){ myinp.parentNode.

我有以下设置,其中添加了自定义复选标记以设置单选按钮的样式。 但它也将该复选标记添加到文本类型输入中

var changed=function(){
Array.from(document.querySelectorAll(“表”)).forEach((元素,索引)=>
{
Array.from(element.querySelectorAll(“输入”)).forEach((myinp,index)=>
{
if(myinp.checked==true){
myinp.parentNode.parentNode.classList.add(“活动”);
}否则{
myinp.parentNode.parentNode.classList.remove(“活动”);
}
});
});  
}//已更改的功能结束
Array.from(document.querySelectorAll(“表”)).forEach((元素,索引)=>
{
Array.from(element.querySelectorAll(“输入”)).forEach((myinp,index)=>
{
var checkmark=document.createElement(“span”);
checkmark.classList.add(“checkmark”);
myinp.parentNode.appendChild(复选标记);
myinp.addEventListener(“更改”,已更改);
});
});
表tbody tr td:第一个孩子{
位置:相对位置;
}
.confirmit表tbody tr输入[type='radio'][type='checkbox']{
可见性:隐藏
}
/*创建自定义复选框*/
.checkmark、.dotmark{
位置:绝对位置;
排名:0;
左:0;
身高:100%;
宽度:25px;
背景色:#eee;
}
输入[type='text']{
宽度:20px;
}
/*在鼠标悬停时,添加灰色背景色*/
表tbody tr:悬停输入~复选标记{
背景色:#ccc;
}
/*在鼠标悬停时,添加灰色背景色*/
表tbody tr:悬停输入~.dotmark{
背景色:#ccc;
}
/*选中复选框后,添加蓝色背景*/
表tbody tr输入:选中~复选标记{
背景色:#11448d;
}
/*选中复选框后,添加蓝色背景*/
表tbody tr输入:选中~.dotmark{
背景色:#11448d;
}
/*创建复选标记/指示器(未选中时隐藏)*/
.checkmark:after,.dotmark:after{
内容:“;
位置:绝对位置;
显示:无;
最高:50%;
}
/*选中时显示选中标记*/
表tbody tr输入:选中~。选中标记:之后{
显示:块;
}
/*选中时显示选中标记*/
表tbody tr输入:选中~。点标记:之后{
显示:块;
}
/*设置复选标记/指示器的样式*/
表T车身tr.复选标记:之后{
左:9px;
最高:30%;
宽度:5px;
高度:10px;
边框:纯白;
边框宽度:0 3px 3px 0;
-webkit变换:旋转(45度);
-ms变换:旋转(45度);
变换:旋转(45度);
}
表tbody tr.dotmark:之后{
左:8px;
顶部:8px;
宽度:10px;
高度:10px;
背景色:#fff;
}
/*自定义复选框/单选按钮*/
表格标签{
宽度:350px;
显示:块;
边际:0px;
填充物:5px10px;
} 
表标签:悬停{
边际:0px;
}
.确认表tbody tr{
背景色:#F5;
}
.主动{
背景:#6081b9!重要;
}

文本输入1
文本输入2
单选按钮1
单选按钮2
单选按钮3
更改

element.querySelectorAll("input")

只获取单选按钮

如果还需要复选框:

element.querySelectorAll("input[type=radio], input[type=checkbox]")
要通过属性present排除特定类型,可以使用

element.querySelectorAll("input:not([type=text])")
请注意,
text
也是默认类型,因此该属性可能会被忽略。为了确保这一点,您可以将
节点列表
转换为
数组
,并应用
过滤器

[...element.querySelectorAll('input')].filter(el -> el.type !== 'text')
在您的情况下,最安全的方法可能是积极过滤方法:

[...element.querySelectorAll('input')].filter(el -> ['checkbox', 'radio'].includes(el.type))

实际上,OP只需要单选按钮。这就行了,@connexo i只想排除文本输入。我对复选框也有相同的样式。非常感谢,这不是个好办法。那么
输入类型=日期
输入类型=密码
输入类型=电子邮件
等呢?如果不需要,请不要使用排除选择器。你一定会在将来制造问题,即使目前你的网站没有这些输入。相反,请使用
元素。querySelectorAll(“input[type=radio],input[type=checkbox]”
。对于没有
type
属性的输入或使用无效属性的输入将不起作用(即使其
类型
IDL将是“text”)。可能存在重复的
[...element.querySelectorAll('input')].filter(el -> el.type !== 'text')
[...element.querySelectorAll('input')].filter(el -> ['checkbox', 'radio'].includes(el.type))