-1

你很快就会发现我不是程序员,只是在最后一刻介入帮助朋友。使用 XML 文件,我们试图克服空字符串。

这是我的代码:

{ 
  document.write("<tr><td align='left'><font color='#333333'>");
  document.write(x[i].getElementsByTagName("Name")[0].childNodes[0].nodeValue);
  document.write(x[i].getElementsByTagName("Party")[0].childNodes[0].nodeValue);
  document.write("</font></td><td align='left'>");
  document.write(x[i].getElementsByTagName("Vote")[0].childNodes[0].nodeValue);
  document.write("</td><td align='right'>");
  document.write(x[i].getElementsByTagName("Total")[0].childNodes[0].nodeValue);
  document.write("</td></tr>");
}

因为并不总是有与“名称”相关联的“派对”,所以当元素为空时脚本会停止。

在这个例子中,我该如何克服它?

我试过这个,没有任何运气:

daNode = x[i].getElementsByTagName("Party")[0];

if (daNode.childNodes.length) {
  da = daNode.childNodes[0].nodeValue;
} else {
  da = "none"
}

谢谢!

编辑以从评论中添加 XML:

<xml>
  <Election>
    <Candidates>
      <Candidate> 
        <Name>Max</Name>
        <Party>Action</Party>
        <Vote>42 votes</Vote> 
        <Total>10 %</Total> 
      </Candidate>
      <Candidate> 
        <Name>John</Name>
        <Party></Party>
        <Vote>82 votes</Vote>
        <Total>20 %</Total>
      </Candidate> 
      <Candidate> 
        <Name>Simon</Name>
        <Party>Action</Party>
        <Vote>1 vote</Vote>
        <Total>1 %</Total>
      </Candidate>
    </Candidates>
  </Election>
</xml>
4

1 回答 1

0

唉,我发现了这个问题。文本节点(标签的实际内容)被认为是标签的子节点,因此<Party>没有文本节点的标签在返回 null ,.childNodes[0]因此在.nodeValue. 这是一个修复:

{ 
   var partyNode = x[i].getElementsByTagName("Party")[0];
   var party = partyNode.firstChild ? partyNode.firstChild.nodeValue : "none";

   document.write("<tr><td align='left'><font color='#333333'>");
   document.write(x[i].getElementsByTagName("Name")[0].childNodes[0].nodeValue);
   document.write(party);  
   document.write("</font></td><td align='left'>");
   document.write(x[i].getElementsByTagName("Vote")[0].childNodes[0].nodeValue);
   document.write("</td><td align='right'>");
   document.write(x[i].getElementsByTagName("Total")[0].childNodes[0].nodeValue);
   document.write("</td></tr>");
}
于 2013-11-01T04:27:07.433 回答