for循环,直到xml属性不为null.从最后一行开始javascript

for loop until xml attribute is not null. start on last row - javascript

本文关键字:最后 javascript 开始 一行 null 直到 循环 xml 属性 for      更新时间:2023-11-11

所以,我有ff.xml,xmlSemesters。

<Semesters>
    <Row SemesterID="60" SequentialOrderNumber="1" />
    <Row SemesterID="61" SequentialOrderNumber="2" />
    <Row SemesterID="54" SequentialOrderNumber="3" />
    <Row SemesterID="" SequentialOrderNumber="4" />
    <Row SemesterID="" SequentialOrderNumber="5" />
</Semesters>

我希望能够选择具有SemesterID值的最后一个节点(在本例中为第三个节点)。行数是动态的,具有semesterID的最后一个节点会有所不同,sequencialordernumber属性只是根据xml的节点数而增加。

因此,目前,我选择具有semesterID值的最后一个节点的方法是:

var xmlLength = xmlSemesters.getElementsByTagName("Row").length;
var firstRow = xmlSemesters.selectSingleNode("//Row[@SemesterID!='']");
var lastRow = xmlSemesters.selectSingleNode("//Row[@SequentialOrderNumber<='"+xmlLength+"' and @SemesterID!='' and @SequentialOrderNumber>'"+firstRow.getAttribute("SequentialOrderNumber")+"']");

所以我有一个firstRow,它将获得具有semesterID值的第一个节点。然后我有一个lastRow,它应该得到具有semesterID值的最后一个节点。但我的代码不是这样的,它得到了第二个节点。所以我知道这是错误的。

有没有其他方法可以让我获得具有semesterID值的最后一个节点?

我正在考虑循环xml,就像从等于xmlLength的节点开始一样。因此,在这种情况下为5,因此在它检测到semesterID为null之后,它将再次循环并将sequencialordernumber属性减去1,直到它到达具有semesterID值的节点。

我只是不知道如何把它写进代码里。或者还有其他办法吗?

语言是javascript。

谢谢!

var xmlRow = xmlSemesters.getElementsByTagName("Row"); //get all the Row element here
//since we are going to start at the end, we have to get the length 
// of xmlRow -1 because it starts with zero..if we have 3 Row element for example
// it has an index of 0,1,2 and not 1,2,3
var len = xmlRow.length - 1; // our lenght is 4 in this case
// Using for loop, we can start our loop from the end
// notice that we start our loop from len which is equals to 4
// and decrement its value using i--
for(var i = len; i > 0; i--) {
   if(xmlRow[i].getAttribute("SemesterID") != "") {
      //it's the last so...
      alert("the last node is "+xmlRow[i]);
      //...we have to break the loop.
      break;
   }
}