貌似,递归的深度不够啊
你就用alert,把每个循环都打出来,看一眼
你有VS2005吗,设debugger调一下

解决方案 »

  1.   

    for (i = 0; i < mySonChildNodes.length; i ++) {alert(i); 
    if (mySonChildNodes[i].childNodes[0].tagName != null 
    && mySonChildNodes[i].childNodes[0].tagName != 'undefined' 
    && mySonChildNodes[i].childNodes[0].tagName != '') { mySonList[mySonChildNodes[i].tagName] = getChildNode(mySonChildNodes[i]); 
    } else { 
    mySonList[mySonChildNodes[i].tagName] = mySonChildNodes[i].text; 


    在这个循环中用alert(getChildNode(mySonChildNodes[i].tagName))深度是够的
    在网上看到有说什么全局变量的问题
    但没看明白
    还请各位指教
      

  2.   


    if (mySonChildNodes[i].childNodes[0].tagName != null
    && mySonChildNodes[i].childNodes[0].tagName != 'undefined'
    && mySonChildNodes[i].childNodes[0].tagName != '') {
    这个判断的前面,你应该判断一下是不是为 null吧。
    如果为空的话,你这句的判断就会使程序错误退出。
      

  3.   

    4楼的帖子中漏了一句。
    在判断之前应该先判断一下
    mySonChildNodes[i].childNodes[0]
    是否为空。
      

  4.   

    谢谢各位热心的朋友,问题解决了,但不是因为你们说的判空问题,是因为在递归的方法中有个循环,循环中的i变量需要声明像下面这样就可以了
    var i = 0;
    for (; i < mySonChildNodes.length; i ++) {alert(i); 
    if (mySonChildNodes[i].childNodes[0].tagName != null 
    && mySonChildNodes[i].childNodes[0].tagName != 'undefined' 
    && mySonChildNodes[i].childNodes[0].tagName != '') { mySonList[mySonChildNodes[i].tagName] = getChildNode(mySonChildNodes[i]); 
    } else { 
    mySonList[mySonChildNodes[i].tagName] = mySonChildNodes[i].text;