从javascript突出显示html:document.evaluate返回null节点

时间:2015-09-22 17:30:00

标签: javascript jquery html ajax xpath

在我的index.html中,有一个div,它将填充从ajax请求返回到另一个网页的一些html内容。我需要突出显示由xpath确定的加载的html内容的某些特定部分。使用解决方案中的代码here,它返回一个空节点。显然当我尝试使用一个引用ajax请求中的代码的xpath时如下所示:

var node = document.evaluate(xpath, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;

它返回一个空节点。

我正在寻找对替换有用的东西"文档"在函数内部,目的是获取一个非空节点,引用来自ajax的代码,而不是来自仍然包含空div的index.html。

我需要填写的div是:' div id =" mainAreaContent"   / DIV'在这里你可以找到我要插入的内容(https://ideone.com/bseVSF),我使用的路径是/table/tr/td/table[1]/tr/td[2]/h3[2]/text()document变量是调用js脚本的index.html。

1 个答案:

答案 0 :(得分:0)

您写道:

/table/tr/td/table[1]/tr/td[2]/h3[2]/text().

如果我在oXygen(一个支持XPath / XSLT等的XML编辑器)中打开你的文件,并且我使它有效(你的引用文件不完整/坏了),那么你给定的XPath选择文本节点"The Architecture and Datasets of Docear's Research Paper Recommender System"sic)。

您写道:

  

我需要填写的div是:' div id =" mainAreaContent" /格

我没有在您的XPath中看到任何div,也没有在您的源HTML中看到任何ID为mainAreaContent的内容,所以如果您正在搜索它,那么您获得{{ {1}}:它不存在。

关于XPath表达式

您展示的XPath从根开始。如果您的root不是null,而是<table>,则应更改它以包含直到<html>元素的路径。您显示的(不完整)文档始于table,但我认为它是HTML页面的一部分。也许您的选择表达式应该像<table>一样开始,但我不知道,您没有显示该部分。