【发布时间】:2010-06-26 14:29:50
【问题描述】:
Mozilla 的 Javascript:
while (result)
{
alert(result.childNodes[0].nodeValue);
//txt=txt+result.childNodes[0].nodeValue+"<br/>";
result=nodes.iterateNext();
}
这旨在从 xml 文件中返回一系列字符串。当我使用警报线时,它会按预期以一系列适当的字符串发出警报。注释行上的“txt”变量应该转到函数中更下方的 innerHTML。但是 Firebug 一直告诉我 result.childNodes[0] 是未定义的。为什么会在alert中定义而不是下一行?
我希望有足够的代码来确定问题...如果没有,我会发布更多。
感谢您的帮助
[编辑]
这是结果的定义:
var x=xmlDoc.responseXML;
var nodes=x.evaluate(path, x, null, XPathResult.ANY_TYPE, null);
var result=nodes.iterateNext();
我正在检索 XML
[编辑]
好的,我将迭代器放在这样的 for 循环中:
for (var i=0; i<2; i++)
{
var res=(xmlNodes.childNodes[0].nodeValue);
txt=txt+res+"<br/>";
xmlNodes=xmlQuery.iterateNext();
}
因为我有一个理论,即一旦迭代为空,循环就会失败。这就是发生的事情——它一直有效,直到我将循环设置为高于可用节点的数量。现在我想弄清楚如何获得节点集的“长度”。我该怎么做?
【问题讨论】:
-
使用 DOM 检查器来浏览问题。
-
如果您使用的是 Firebug,请尝试使用
console.log()而不是alert()。特别是如果您要查找的值是null或undefined,您更有可能在控制台中看到它而不是在警报中看到它。我不知道为什么会这样。 -
result是如何定义的?您要检索的元素的 HTML 源代码是什么?
标签: javascript firefox xpath evaluate