使用指定的属性值从DOM获取节点的最简单方法

时间:2012-01-04 14:23:51

标签: javascript html dom extjs selector

这不是问题,我只是要求最简单的方法来实现它。

我有什么。

在HTML中:复选框列表。

<input type="checkbox" value="1" />
<input type="checkbox" value="2" />
<input type="checkbox" value="3" />
<input type="checkbox" value="4" />

在JavaScript中 - 包含多个值的数组:var aValues = [1, 3];我需要使用aValues中指定的值从DOM中获取所有复选框。

我是怎么做到的:

var aoNodes = document.querySelectorAll('input[value="1"], input[value="3"]');

但也许有人知道更简单(更短)的方式来构建查询,例如:input[value="1"|"3"]input[value="1", "3"]

上面的两个例子都不正确,但我只是为了让你更清楚。

更新

更多事情要澄清我的问题:

  • jQuery不能在我的情况下使用
  • 我们在项目中使用ExtJS。

2 个答案:

答案 0 :(得分:1)

怎么样......

var checkboxes = form.querySelectorAll( 'input[type="checkbox"]' );

checkboxes = [].filter.call( checkboxes, function ( checkbox ) {
    return aValues.indexOf( +checkbox.value ) > -1;
});

其中form是包含所有复选框的元素。 (您不希望不必要地进行文档级查询。)

请注意,这会使用Array.filter()may not be available in all browsers

现场演示: http://jsfiddle.net/zF3mu/

答案 1 :(得分:0)

var boxes = [].slice.call(form.elements).filter(function ( element ) {
    return element.type === 'checkbox' && [1,3].indexOf(+element.value) > -1;
});

使用form.elements获取表单的输入。然后按类型和值进行过滤。