在JavaScript中使用XPath表达式迭代框架集?

时间:2010-05-07 21:09:03

标签: javascript dom frameset document.evaluate

为什么以下JavaScript在Firefox 3.6.3中运行时会删除文档中的所有FRAMESET元素,但是使用XPath表达式来选择FRAMESET元素的类似脚本会不? document.evaluate()根本无法匹配FRAMESET元素吗? XPath表达式中是否有错误?还有其他错误吗?

使用方法FRAMESET(成功)选择所有document.getElementsByTagName()元素:

var framesets = document.getElementsByTagName('frameset');
for (var i = 0; i < framesets.length; i++) {
  framesets[i].parentNode.removeChild(framesets[i]);
}

使用XPath表达式选择所有FRAMESET元素(失败):

var framesets = document.evaluate("//frameset", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
for (var i = 0; i < framesets.length; i++) {
  framesets[i].parentNode.removeChild(framesets[i]);
}

1 个答案:

答案 0 :(得分:1)

似乎XPathResult是iterator-ish。它没有长度属性。

https://developer.mozilla.org/en-US/docs/Web/API/Document/evaluate

framesets.length将是未定义的。简而言之,Here Be Dragons。