问题标签 [nodelist]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
dom - NodeList 是如何实现的?
DOM NodeList(例如由 element.getElementsByTagName 返回)是一个有趣的对象,因为它不是快照,而是反映了在创建 NodeList 之后对文档所做的更改。
我想知道如何实现这样的集合:完全懒惰的评估一定非常慢,但保持缓存版本的一致性需要在内部进行大量的簿记。
我尝试在 google 上搜索有关该主题的博客文章,并尝试查找 Mozilla 的相关源代码文件,但无法立即找到任何内容(当我无法立即找到内容时,我会来这里...)。
那么 Firefox、Safari、Internet Explorer(和其他非浏览器 DOM 实现)如何处理 NodeList?
javascript - JavaScript 节点列表
有没有办法加入由 2 次 document.getElementsByTagName 调用返回的 2 个 NodeLists?
说,我有以下代码
我想遍历结果。是否可以在一个循环中?
先感谢您!
xml - 我可以将 groovy 的标记生成器交给节点列表吗?
我正在使用 groovy 进行一些 XML 处理。具体来说,我通过 XMLParser 吸入一个 XML 文件,在内存中进行一整批处理,然后通过 MarkupBuiler 将结果数据序列化回 XML。
文件中的绝大多数数据都被传输到基于非 xml 的对象层次结构中,以便与 gui 对话并完成处理,因此这两个 XML 文件永远不会相互了解。
但是,存在一种位于源文件边缘的 XML 块,需要将其逐字复制到输出 XML 文件中,而几乎不需要处理。有没有办法可以将 XMLParser 中的节点列表交给 MarkupBuilder 并将其插入到文档中?
像这样的东西:
javascript - [].forEach.call(...?
我非常喜欢在 nodeLists 上使用 forEach 方法,如下所示:
不过我想知道,这样做会比常规方式花费更长的时间吗?例如
java - 加速 xpath
我有一个 1000 条目文档,其格式类似于:
这里有1000多个Entry节点。我正在编写一个 Java 程序,它基本上一个一个地获取所有节点,并对每个节点进行一些分析。但问题是节点的检索时间随着节点数的增加而增加。例如,检索第一个节点需要 78 毫秒,检索第二个节点需要 100 毫秒,并且它不断增加。检索 999 节点需要 5 秒以上。这是非常缓慢的。我们会将此代码插入到具有超过 1000 个条目的 XML 文件中。有些人喜欢数百万。解析整个文档的总时间超过 5 分钟。
我正在使用这个简单的代码来遍历它。这nxp
是我自己的类,它具有从 xpath 获取节点的所有方法。
并且doc
是文件的文档。i
是要检索的节点编号。
另外,当我尝试这样的事情时
我面临同样的问题。
任何人都有关于如何加速节点的任何解决方案,因此从 XML 文件中获取第一个节点和第 1000 个节点需要相同的时间。
这是 xpathtonode 的代码。
这是 fromxpathtonodes 的代码。
这是开始
javascript - Javascript - 将多个节点列表连接在一起
我最初是在寻求一种优雅的方式来模拟IE 或旧浏览器中函数Array.concat()
结果的getElementsByTagName
功能,因为它似乎concat
不受支持。只是,当然是——返回的对象不支持它的原因是因为它不是Array
. 哎呀!
getElementsByTagName
实际上返回一个NodeList
. 那么,真正的问题是:获取文档中所有表单元素(输入、选择、文本区域、按钮)的单个列表以循环遍历它们的好方法是什么?不需要数组...单个NodeList
也很完美。
请注意,我使用的是 IE6,因为这是用于公司 Intranet(不过很快会使用 IE8)。
我想出的答案是:
将代码放入一个单独的函数并使用不同的节点列表调用 3 次变得更简单,并且性能可能更好,而不是担心将它们组合在一起的好方法。
我最终转而使用 MooTools(经过几个小时阅读了所有不同框架的比较)。所以现在,获取我想要的项目数组非常简单。我建议使用这样的 javascript 框架,而不是人们绞尽脑汁试图找出做事的最佳方式。当然,我完全赞成实际学习原始语言(这就是为什么我一直推迟使用框架的原因),但这并不总是让事情顺利进行的最快方式,这在企业中通常同样重要就像提高编码员的语言能力一样。
更新:差不多 2 年后我会使用 jQuery 并完成它!
javascript - 将 JavaScript NodeList 转换为数组的最快方法?
之前在这里回答的问题说这是最快的方法:
在我的浏览器上进行基准测试时,我发现它比这慢了 3 倍以上:
它们都产生相同的输出,但我很难相信我的第二个版本是最快的方法,特别是因为人们在这里说了其他话。
这是我的浏览器(Chromium 6)中的一个怪癖吗?还是有更快的方法?
编辑:对于任何关心的人,我选择了以下内容(这似乎是我测试的每个浏览器中最快的):
EDIT2:我找到了一种更快的方法
javascript - 如何区分实时和非实时 NodeList 集合?
document.getElementsByTagName('div') 和 document.querySelectorAll('div') 都返回 NodeList 集合。唯一的区别是第一种方法返回实时集合,第二种方法返回静态集合。
问题是 - 是否有机会仅通过检查这些对象来区分一个对象和另一个对象(即 - 不尝试添加/删除某些项目来测试“活跃度”)?
提前致谢
java - 如何从Java中的XML读取带有等号的属性标签?
我正在通过 Java 解析 XML 文件,并且能够通过 XML 文件中显示为的节点进行解析:
<name><given>familyName</given></name>
通过使用如下所示的代码片段:
但我无法读取格式如下的属性:
我应该如何以不同的方式读取上述值?提前致谢。
javascript - 将 NodeList 转换为数组
我很难NodeList
在 IE 8 中将 a 转换为数组。以下内容在 Chrome 中完美运行,但在 IE 8toArray()
中不被识别为有效:
我尝试将原型函数添加到数组中只是为了检查我的理智并且它可以正常工作。这让我觉得 IE 8 实际上并没有返回 a NodeList
? 这是一个完整的例子:
我究竟做错了什么?