前端js递归培训内容记录

前端js:

var ab    =    {};
    ab[0]    =    {'id':'1','pid':'0'};
    ab[1]    =    {'id':'2','pid':'0'};
    ab[2]    =    {'id':'1.1','pid':'1'};
    ab[3]    =    {'id':'1.2','pid':'1'};
    ab[4]    =    {'id':'1.2.1','pid':'1.2'};
    ab[5]    =    {'id':'1.2.2','pid':'1.2'};
    ab[6]    =    {'id':'1.2.2.1','pid':'1.2.2'};
    
//调用向下递归    
//console.log(ac1(ab,'0'));
//console.log(ac2(ab,'1',0));
console.log(ac3(ab,'1.2.2',0));

//向下递归
function ac1(json,pid){
    var new_ab    =    {};
    for(var i in json){
        if(json[i]['pid']==pid){
            new_ab[i]    =    json[i];
            
            new_ab[i]['children']    =    ac1(json,json[i]['id']);
        }
    }
    return new_ab;
}

//向上递归
function ac3(json,pid,zizeng){
    var new_ab    =    {};
    for(var i in json){
        if(json[i]['id']==pid){
            new_ab[i]    =    json[i];
            
            new_ab[i]['parent']    =    ac3(json,json[i]['pid'],zizeng);
        }
    }
    return new_ab;
}

//向下平级递归
function ac2(json,pid,zizeng){
    var new_ab    =    {};
    for(var i in json){
        if(json[i]['pid']==pid){
            new_ab[zizeng]    =    json[i];
            new_ab    =    Object.assign(new_ab,ac2(json,json[i]['id'],zizeng++));
        }
    }
    return new_ab;
}


$(function(){
    
    //打印联动选择
    $('input[type="checkbox"]').on('click',function(){
        
        var id    =    $(this).attr('id');
        var pid    =    $(this).attr('pid');
        
        var isOn    =    $(this).is(':checked');
        if($(this).attr('click')=='true'){
            isOn    =    true;
            $(this).removeAttr('click');
        }
        if(isOn){
            
            //向上递归
            function xiangshang(pid){
                var isEn    =    $('input[type="checkbox"][id="'+pid+'"]').size();
                if(isEn){
                    $('input[type="checkbox"][id="'+pid+'"]').attr('checked','checked');
                    var new_pid    =    $('input[type="checkbox"][id="'+pid+'"]').attr('pid');
                    xiangshang(new_pid);
                }
                return false;
            }
            
            //向下递归
            function xiangxia(id){
                var isEn    =    $('input[type="checkbox"][pid="'+id+'"]').size();
                if(isEn){
                    for(var i=0;i<isEn;i++){
                        $('input[type="checkbox"][pid="'+id+'"]').eq(i).attr('checked','checked');
                        var new_id    =    $('input[type="checkbox"][pid="'+id+'"]').eq(i).attr('id');
                        xiangxia(new_id);
                    }
                }
                return false;
            }
            
            //向上递归
            xiangshang(pid);
            //向下递归
            xiangxia(id);
        }
        else{
            
        }
    });
    
    //改变值时勾选打印
    $('input[type="text"],select').on('change',function(){
        var print_id    =    $(this).attr('print_id');
        var isEn    =    $('input[type="checkbox"][id="'+print_id+'"]').is(':checked');
        if(!isEn){
            $('input[type="checkbox"][id="'+print_id+'"]').attr('click','true').click();
        }
    })
    
    
});

猜你喜欢

转载自www.cnblogs.com/phpyangbo/p/12802607.html
今日推荐