2011-10-16 2 views
0

위의 코드가 optgroup의 끝에 도달하면 중지됩니다 ... 마지막 옵션 요소를 읽지 않습니다 ... 무슨 일이 일어나고 있습니까? 감사합니다재귀 실수

console.log ('entering');

  • 는 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

HTML 및 스크립트가 http://jsfiddle.net/에 게시되면 도움이됩니다. –

답변

0

참조, 당신은에 전체 코드를 선언 한 경우 함수 MacOsxSelectOptionToLi()을 사용하고 셀렉터를 사용하여 html select 요소를 얻으면이 코드는 무한 재귀를 수행합니다. 따라서 다른 함수에서 호출하십시오. 예 :

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