这只是一个简单的问题。我目前正在使用 Mozilla 的 Rhino 开发一个小的网络应用程序。第一步,我需要获取一个网页并过滤它的所有节点。为此,我使用 E4X。我以为我可以那样做:
var pnodes = doc..*(p);
但这会产生错误。如何正确完成?
(顺便说一句:这只是提高性能的一步。代码已经很好,只是有点慢。)
最佳答案
您应该能够使用以下内容:
doc..*.(name() == "p")
请注意,这里有一个 bug在 Rhino 和 SpiderMonkey 实现中,过滤器表达式 name() == "p"
没有正确地限定到当前节点,所以 XML
或 都没有定义了 XMLList
方法。
另一个可行的解决方案是查找文档中的所有 p
节点,并将每个节点的父节点累积到一个数组中。
var elements = [];
for each (var p in doc..p) {
var parent = p.parent();
if(elements.indexOf(parent) === -1)
elements.push(parent);
}
关于javascript - 在 E4X 中过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2906907/