【发布时间】:2010-04-29 05:59:39
【问题描述】:
我有一个接受 HTML 节点列表的 Javascript 函数,但它需要一个 Javascript 数组(它在上面运行一些 Array 方法),我想向它提供 Document.getElementsByTagName 的输出,它返回一个 DOM 节点列表。
最初我想用一些简单的东西,比如:
Array.prototype.slice.call(list,0)
这在所有浏览器中都可以正常工作,当然 Internet Explorer 除外,它返回错误“预期的 JScript 对象”,因为 Document.getElement* 方法返回的 DOM 节点列表显然不是一个足以成为目标的 JScript 对象函数调用。
注意事项:我不介意编写 Internet Explorer 特定代码,但我不允许使用任何 Javascript 库,例如 JQuery,因为我正在编写要嵌入到 3rd 方网站的小部件,但我无法加载会为客户端造成冲突的外部库。
我最后的努力是遍历 DOM 节点列表并自己创建一个数组,但有更好的方法吗?
【问题讨论】:
-
更好的是,创建一个从 DOM 节点列表转换的函数,但这确实是我的解决方案,我认为你是对的。
-
> for (i=0;i
-
这是一个非常老的问题,但是 jQuery 是专门使用 .noConflict 方法构建的,因此它不会与其他库(甚至它本身)造成冲突,这意味着多个版本jQuery 可以加载到一个页面上。也就是说,除非万不得已,否则最好避免使用/加载库。
-
@vol7ron:快进到 2016 年,每个人仍然对 JavaScript 库添加到页面的大小感到紧张。诚然,JQuery 缩小和 gzip 压缩后为 30KB,仅转换节点列表仍为 30KB 太多了 :-)
标签: javascript html dom