什么';在javascript中获取特定DOM元素组的内容列表的最佳方法是什么?
基本场景:我在HTML页面上有一系列动态生成的元素。(目前,它们都是什么';在javascript中获取特定DOM元素组的内容列表的最佳方法是什么?,javascript,html,dom,Javascript,Html,Dom,基本场景:我在HTML页面上有一系列动态生成的元素。(目前,它们都是div,但不一定是。) 我想要的是一个javascript函数,它将循环通过所有那些div(或其他)来查找特定值的存在 实现这一点的最佳、最跨浏览器的方法是什么?getElementsByName()是否适用于所有浏览器中的divs?我可以给它们所有相同的ID,然后以某种方式从getElementById中获取一个数组吗 如果我将那些div更改为span或输入,这会使事情变得更简单吗 谢谢 (编辑:对于这个项目,如果有一个不使用
div
,但不一定是。)
我想要的是一个javascript函数,它将循环通过所有那些div
(或其他)来查找特定值的存在
实现这一点的最佳、最跨浏览器的方法是什么?getElementsByName()是否适用于所有浏览器中的divs
?我可以给它们所有相同的ID,然后以某种方式从getElementById中获取一个数组吗
如果我将那些div
更改为span
或输入
,这会使事情变得更简单吗
谢谢
(编辑:对于这个项目,如果有一个不使用任何外部js库的解决方案,那将是最好的。我假设jQuery有一个只在一行中实现这一点的函数,但目前我希望避免打开客户端的蠕虫。)
getElementsByTagName
是在DOM Core中定义的,因此,任何实现该功能的浏览器都可以工作。这就是目前使用的每一款浏览器
在这里看一看具体情况:
需要注意的一个问题是
getElementsByTagName
返回一个NodeList
——而不是一个数组。它的工作原理是相同的,但计算时间很晚,因此如果在遍历节点列表时向DOM添加/删除节点,将得到奇怪的结果。在这些情况下,写两个循环;首先循环通过节点列表
并将所有条目存储在一个数组中,然后循环通过该数组。getElementsByTagName
是在DOM核心中定义的,因此任何实现该功能的浏览器都可以工作。这就是目前使用的每一款浏览器
在这里看一看具体情况:
需要注意的一个问题是getElementsByTagName
返回一个NodeList
——而不是一个数组。它的工作原理是相同的,但计算时间很晚,因此如果在遍历节点列表时向DOM添加/删除节点,将得到奇怪的结果。在这些情况下,写两个循环;首先循环通过节点列表
并将所有条目存储在一个数组中,然后循环通过数组。元素是什么并不重要,重要的是它们在页面中的位置。如果它们都是单个父元素的子元素,那么问题很简单。给父元素一个ID,您可以使用getElementById()
获取它并迭代它的子元素
getElementById()
当在文档中找到一个ID的多个实例时,行为是未定义的。大多数人会返回他们能找到的第一个元素,但你肯定无法获得数组
getElementsByTagName()
只有在您可以使用一些您确信不会出现在页面其他地方的模糊标记的情况下才会起作用。您可以通过指定您感兴趣的元素将有一个您可以检查的属性(例如@class或@title)来增强这一点。然后,您可以循环检查getElementsByTagName()
的结果,只查看属性存在的元素。元素是什么并不重要,重要的是它们在页面中的位置。如果它们都是单个父元素的子元素,那么问题很简单。给父元素一个ID,您可以使用getElementById()
获取它并迭代它的子元素
getElementById()
当在文档中找到一个ID的多个实例时,行为是未定义的。大多数人会返回他们能找到的第一个元素,但你肯定无法获得数组
getElementsByTagName()
只有在您可以使用一些您确信不会出现在页面其他地方的模糊标记的情况下才会起作用。您可以通过指定您感兴趣的元素将有一个您可以检查的属性(例如@class或@title)来增强这一点。然后,您可以循环查看检查此属性的结果,只查看属性所在的元素。您可以使用site查看getElementsByTagName()最适合您需要的元素。
有一些正在使用的库和一些类似Troleskn的库在所有支持浏览器中都适用于标准javascript。您可以使用站点查看getElementBy最适合您的需要。
有一些正在使用的库和一些类似Troleskn编写的库在所有支持浏览器中应用标准javascript。这些div的值在哪里?innerHTML?一个属性?坦白说,这还没有定义。最简单的是什么?这些div的值在哪里?innerHTML?一个属性?坦白说,这还没有定义。最简单的方法是什么?注意使用.childNodes,因为不同的浏览器将HTML表示为不同的DOM结构。特别是,空格可能会也可能不会成为TextNodes。请注意使用.childNodes,因为不同的浏览器将HTML表示为不同的DOM结构。特别是,空白可能会也可能不会成为文本节点。