当前位置:  开发笔记 > 编程语言 > 正文

JavaScript NodeList

如何解决《JavaScriptNodeList》经验,为你挑选了3个好方法。

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

说,我有以下代码

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

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

先感谢您!



1> Simon..:

好像你可以使用相同的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);


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

2> Mario Menger..:

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

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

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

$('input, select')



3> Yansky..:
document.querySelectorAll("input, select"); 


需要FF 3.1 +,Safari 3.1+或IE8 +
推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有