3

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");
}
1
  • Do you mean it's dropping completely from the stack, every iteration of it, when it encounters the else, or just the level it's on? Commented Feb 26, 2010 at 17:30

1 Answer 1

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.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.