【问题标题】:Iterate over framesets with XPath expression in JavaScript?在 JavaScript 中使用 XPath 表达式迭代框架集?
【发布时间】:2010-05-07 21:09:02
【问题描述】:

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

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

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]);
}

【问题讨论】:

    标签: javascript dom frameset document.evaluate


    【解决方案1】:

    XPathResult 似乎是迭代器式的。它没有长度属性。

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

    framesets.length 将未定义。简而言之,这里有龙。

    【讨论】:

    • 是的,你是对的。正要给出类似的答案,但你打败了我!
    • 最好把答案复制到这里,因为那个页面已经不存在了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2021-08-05
    • 2022-01-27
    • 2020-11-21
    • 2016-01-06
    相关资源
    最近更新 更多