我希望脚本能够找到它所说的位置,xml中的“anyword”(当然在标签内),然后停在那里。以下完成罚款。
var xmlDoc = loadXMLDoc("nhl.xml");
var x = xmlDoc.getElementsByTagName("tagname");
for (var i=0;i<=x.length;i++){
if (x[i].textContent = "anyword") {
var variable = x[i].textContent;
}
}
但是我想更进一步,并且能够在找到'anyword'之后将'variable'设置为下一个节点。所以我尝试了类似这样的东西,它回来了集合中的最后一个元素,而不是下一个元素。
var xmlDoc = loadXMLDoc("nhl.xml");
var x = xmlDoc.getElementsByTagName("tagname");
for (var i=0;i<=x.length;i++){
if (x[i].textContent = "anyword") {
var variable = x[i+1].textContent;
}
}
所以我再次编辑了最后一行,并将其作为
var variable = x[i].nextSibling.textContent;
这回来了。在这里撕开我的头发。如果它有助于回答任何问题,如果我只是把它x[i].nextSibling
,它就会回来[Object Text]
任何帮助?
答案 0 :(得分:4)
这是人们的常见问题。现代浏览器(除了IE之外基本上都是它们)将在元素之间添加文本节点。那些文本节点只包含空格,并没有太多用处。使用此功能查找下一个节点。
function nextSibling(node) {
do {
node = node.nextSibling;
} while (node && node.nodeType != 1) ;
return node
}
这里解释得非常好:JavaScript XML Parsing
答案 1 :(得分:4)
x[i].textContent = "anyword"
你的意思是x[i].textContent == "anyword"
?
答案 2 :(得分:0)
var xmlDoc = loadXMLDoc("nhl.xml");
var x = xmlDoc.getElementsByTagName("tagname");
for (var i=0;i<=x.length;i++){
if (x[i].textContent = "anyword") {
var variable = x[i+1].textContent;
}
}
我没看详细,但这对我来说似乎很奇怪:
for (var i=0;i<=x.length;i++)
你试过吗
for (var i=0;i<x.length;i++)