Javascript 如何仅对具有特定属性集的元素使用querySelectorAll?

Javascript 如何仅对具有特定属性集的元素使用querySelectorAll?,javascript,css-selectors,selectors-api,Javascript,Css Selectors,Selectors Api,我正在尝试对设置了值属性的所有复选框使用document.querySelectorAll 页面上还有其他未设置值的复选框,每个复选框的值都不同。但是ID和名称不是唯一的 例如: 如何仅选择那些设置了值的复选框?您可以像这样使用queryselectoral(): var test = document.querySelectorAll('input[value][type="checkbox"]:not([value=""])'); 这意味着: 获取具有属性“value”且属性“value

我正在尝试对设置了
属性的所有复选框使用
document.querySelectorAll

页面上还有其他未设置值的复选框,每个复选框的值都不同。但是ID和名称不是唯一的

例如:


如何仅选择那些设置了值的复选框?

您可以像这样使用
queryselectoral()

var test = document.querySelectorAll('input[value][type="checkbox"]:not([value=""])');
这意味着:

获取具有属性“value”且属性“value”不为空的所有输入


,它将禁用具有非空值的复选框。

其他提示:

多个“NOT”,未隐藏且未禁用的输入:

:not([type="hidden"]):not([disabled])
您是否知道您可以这样做:

node.parentNode.querySelectorAll('div');
这相当于jQuery的:

$(node).parent().find('div');
这将有效地发现所有div在“node”和下面递归,热该死

以您的例子:

<input type="checkbox" id="c2" name="c2" value="DE039230952"/>
将这些示例直接用于:

const $$ = document.querySelectorAll.bind(document);
一些补充:

$$(.) //The same as $([class])
$$(div > input) //div is parent tag to input
document.querySelector() //equals to $$()[0] or $()

这包括空格吗?像
values=“”
其他复选框根本没有值,因此它不必包含该值。但是如何只选择复选框类型的输入?还有许多其他的输入标记具有值属性,但我只想要复选框。@Soryn add
[type=“checkbox”]
。更新了我的答案。很好的答案!这在很大程度上消除了在小型库中包含jQuery以进行DOM遍历的需要。我在下面的回答中得到了一些额外的提示。你能告诉我这种语法输入是什么吗[value][type=“checkbox”]:不是([value=”“]我以前在javascript@blackHawk该语法使用CSS选择器。正如它所指定的,“是一个包含一个或多个CSS选择器的字符串,用逗号分隔”。您可以阅读有关CSS选择器的内容。
$$(.) //The same as $([class])
$$(div > input) //div is parent tag to input
document.querySelector() //equals to $$()[0] or $()