admin管理员组

文章数量:1334823

Maybe is a trivial problem, i don't know why this function exit from for cycle when it goes on else statement. I need this function to fetch an xml document.

function xmlToArray(element){
    childs= element.childNodes;
    if(childs.length != 1){
      for(var i=0;i<childs.length;i++){
        if(childs[i].hasChildNodes()){
          xmlToArray(childs[i]);
        }
        alert("exit from if");
      }//end for
      alert("exit from for");
    }//end if
    else{
      alert("do something with element");
    }
    alert("end of func");
}

Maybe is a trivial problem, i don't know why this function exit from for cycle when it goes on else statement. I need this function to fetch an xml document.

function xmlToArray(element){
    childs= element.childNodes;
    if(childs.length != 1){
      for(var i=0;i<childs.length;i++){
        if(childs[i].hasChildNodes()){
          xmlToArray(childs[i]);
        }
        alert("exit from if");
      }//end for
      alert("exit from for");
    }//end if
    else{
      alert("do something with element");
    }
    alert("end of func");
}
Share Improve this question edited Feb 26, 2010 at 17:37 Joel Coehoorn 416k114 gold badges578 silver badges813 bronze badges asked Feb 26, 2010 at 17:28 Manuel BittoManuel Bitto 5,2636 gold badges42 silver badges48 bronze badges 1
  • Do you mean it's dropping pletely from the stack, every iteration of it, when it encounters the else, or just the level it's on? – Tarka Commented Feb 26, 2010 at 17:30
Add a ment  | 

1 Answer 1

Reset to default 8

Since childs is not a local variable, all calls of xmlToArray work on the same data.

Try this:

function xmlToArray(element) {
    var childs = element.childNodes;
    // …
}

Using var declares that variable in the current scope.

本文标签: recursionRecursive function in javascriptStack Overflow