JS getElementsByTagName除了具有特定类的那个

时间:2011-08-19 14:23:25

标签: javascript

我有这个变量:

var _inputs = document.getElementsByTagName('input');

但是我想创建一个新变量来选择所有输入,除了具有特定类的输入,如“.nothis”。

var _newinputs = document.getElementsByTagName('input') && document.getElementsByClass('!nothis');

4 个答案:

答案 0 :(得分:6)

答案 1 :(得分:3)

试试这个:

var _inputs = document.getElementsByTagName('input');
var filteredInputs = [];
var re = new RegExp('\\b' + 'nothis' + '\\b');  // or any other class name
for(var i=0; i<_inputs.length;i++) {
    if (!re.test(input.className)) {   // filter out by class name
        filteredInputs.push(_inputs[i]);
    }
}

更新:根据katspaugh

的建议,添加正则表达式匹配以消除误报

答案 2 :(得分:3)

试试这段代码:

var _inputs = Array.prototype.filter.call(
                   document.getElementsByTagName("input"),
                   function(obj) { 
                     return obj.className.split(" ").indexOf("nothis")===-1;
                   });

答案 3 :(得分:1)

在现代浏览器中,您可以

var inputs = document.querySelectorAll('input:not(.nothis)');