递归错误

时间:2011-10-16 07:14:16

标签: javascript recursion

当我的代码在optgroup结束时到达时,它停止了...不读取最后一个选项元素......发生了什么?感谢

的console.log( '进入');

  • 这是html           选择 - -             选项             optgroup ---                选项                选项             选项

    var t,v = '';
    
    el = $(selector).get(0);
    
    if(el.hasChildNodes()){
    
            var li = '<ul>' ;
            for(var i = 0; i <  el.childNodes.length; i++){
                    console.log('-----'+i+' '+el.childNodes[i].nodeName);
                    //console.log(el.childNodes[i].nodeName + ' -> '+ $(el.childNodes[i]).text());
                    if(el.childNodes[i].nodeName == 'OPTION'){
    
                        t = $(el.childNodes[i]).text();
                        v = $(el.childNodes[i]).val();
    
                         li = li + "<li value='"+v+"' >"+t+"</li>";
    
                    }else if(el.childNodes[i].nodeName == 'OPTGROUP'){
    
                        if(el.childNodes[i].hasChildNodes()){
                            var c = MacOsxSelectOptionToLi(el.childNodes[i]);
                            /*var c = '<ul>';
                            for(var j = 0; j <  el.childNodes[i].childNodes.length; j++){
                                    if(el.childNodes[i].childNodes[j].nodeName == 'OPTION'){
                                         t = $(el.childNodes[i].childNodes[j]).text();
                                         v = $(el.childNodes[i].childNodes[j]).val();
                                         c = c + "<li value='"+v+"' >"+t+"</li>";
                                    }                                   
                            }
                            c = c+ '</ul>';
                            */
                        }else{
                            var c = '';
                        }
                        var t = $(el.childNodes[i]).attr('label');                          
                        li = li + "<li class='optiongroup' >"+t+c+"</li>";
    
                    }
    
    
    
            }
    
            return li + '</ul>';
    }
    

1 个答案:

答案 0 :(得分:0)

请参阅,如果您已在函数MacOsxSelectOptionToLi()中声明了整个代码并使用选择器来获取html select元素,则代码将进行无限递归。因此,从其他功能进行调用。 E.g。

function initFunction() {
    var convertSelectToULCode = MacOsxSelectOptionToLi($(selector));
}