使用JavaScript中的XPath表达式迭代框架集? [英] Iterate over framesets with XPath expression in JavaScript?

查看:125
本文介绍了使用JavaScript中的XPath表达式迭代框架集?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Why does the following JavaScript, when run in Firefox 3.6.3, delete all FRAMESET elements in a document, but the similar script that instead uses an XPath expression to select the FRAMESET elements, does not? Is document.evaluate() simply unable to match FRAMESET elements? Is there an error in the XPath expression? Is there some other error?

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

Select all FRAMESET elements using method document.getElementsByTagName() (succeeds):

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

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

Select all FRAMESET elements using an XPath expression (fails):

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


推荐答案

看来,XPathResult是迭代器十岁上下。它没有长度属性。

It appears that the XPathResult is iterator-ish. It does not have a length property.

https://developer.mozilla.org/en/DOM/document.evaluate

framesets.length 将被定义。总之,这里是龙。

framesets.length will be undefined. In short, Here Be Dragons.

这篇关于使用JavaScript中的XPath表达式迭代框架集?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆