繁体   English   中英

获取 javascript 中特定 DOM 元素组的内容列表的最佳方法是什么?

[英]What's the best way to get a list of the contents of a specific group of DOM elements in javascript?

基本场景:我在 HTML 页面上有一系列动态生成的元素。 (目前,它们都是divs ,但它们不需要。)

我想要的是一个 javascript function 它将遍历所有这些divs (或其他)以寻找特定值的存在。

最好、最跨浏览器的方法是什么? getElementsByName() 是否适用于所有浏览器中的divs 我可以给他们所有相同的 ID 并以某种方式从 getElementById 中获取一个数组吗?

如果我将这些divs更改为spansinputs ,这会让事情变得更容易吗?

谢谢!

(编辑:最好,对于这个项目,如果有一个不使用任何外部 js 库的解决方案。我假设 jQuery 有一个 function 可以在一行中执行此操作,但目前我想避免打开它一罐蠕虫与客户端。)

getElementsByTagName是在 DOM Core 中定义的,因此任何实现它的浏览器都可以工作。 这就是当前使用的所有浏览器。

看看这里的细节: http://www.quirksmode.org/dom/w3c_core.html

需要注意的一个问题是getElementsByTagName返回一个NodeList - 而不是一个数组。 它的工作原理是一样的,但它的评估很晚,所以如果你在遍历NodeList时向 DOM 添加/删除节点,你会得到奇怪的结果。 在这些情况下,编写两个循环; 首先循环遍历NodeList并将所有条目存储在数组中 - 然后循环遍历数组。

元素是什么并不重要,重要的是它们在页面中的位置。 如果它们都是单个父元素的子元素,那么您的问题很简单。 给父元素一个 ID,你可以使用getElementById()来获取它并迭代它的子元素。

当在文档中找到多个 ID 实例时, getElementById()行为未定义。 大多数会返回他们能找到的第一个元素,但你当然不能指望得到一个数组。

getElementsByTagName()仅当您可以使用一些您确定不会出现在页面其他位置的晦涩标签时才有效。 您可以通过指定您感兴趣的元素将具有您可以检查的属性(例如@class 或@title)来扩充它。 然后,您可以循环检查getElementsByTagName()的结果并仅查看存在该属性的元素。

您可以使用站点查看 getElementBy 最适合您的需求。
有一些使用库和一些像troelskn写的,在所有支持的浏览器中都适用于标准 javascript。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM