JavaScript NodeList

Das*_*alo 27 javascript dom concat nodelist

有没有办法加入2个调用document.getElementsByTagName返回的2个NodeLists?

说,我有以下代码

var inputs = documentElement.getElementsByTagName('input');
var selects = document.getElementsByTagName('select');
Run Code Online (Sandbox Code Playgroud)

我想循环结果.有可能在一个循环中吗?

先感谢您!

Sim*_*mon 46

好像你可以使用相同的Array.prototype.slice.call,它使args数组类对象成为一个数组.(见这里)

var inputs = document.getElementsByTagName('input');
var selects = document.getElementsByTagName('select');

inputs = Array.prototype.slice.call(inputs);
selects = Array.prototype.slice.call(selects);

var res = inputs.concat(selects);

alert(res.length);
Run Code Online (Sandbox Code Playgroud)

  • 要记住的一件小事是,这在Internet Explorer或BlackBerry浏览器中不起作用.jQuery 1.4有一个有趣的测试,用于回退到一个循环来组合节点列表.我在这里摘录了它:http://pastebin.com/TkTwMG17 (10认同)

Mar*_*ger 20

你不能加入它们,但你仍然可以在一个循环中顺序循环它们,如下所示:

for ( var i = 0; i < inputs.length + selects.length; i++ ) {
    var element = ( i < inputs.length ) ? inputs[i] : selects[i-inputs.length];
}
Run Code Online (Sandbox Code Playgroud)

或者,使用jQuery,您可以一次性选择它们:

$('input, select')
Run Code Online (Sandbox Code Playgroud)


Yan*_*sky 12

document.querySelectorAll("input, select"); 
Run Code Online (Sandbox Code Playgroud)

  • 需要FF 3.1 +,Safari 3.1+或IE8 + (2认同)