dwa4821 2017-03-02 09:28 采纳率: 71.4%
浏览 977

js 递归函数,简化代码

如果 if else条件里和mumber比较的数字是一组数组。元素数量不定。
如何用递归函数的方式简化下列if else。
thanks


// JavaScript Document
(function(){
    var mamture_progress = $('#mamture_progress');
    var progress_content = $('#progress_content');
    var l = 0;
    var _number = progress_content.attr('data-progress');
    var timer = null;
    var pro = 0;


    if ( _number >= 200 && _number < 1000  ) {
        lad(200, 200, '.progress-box-1', function(){
            mamture_progress.addClass('v1');
            lad(_number-200, 1000-200, '.progress-box-2',function(){
                $('.progress-box-2').addClass('active');

            });
        });
    };

    if ( _number >= 1000 && _number < 5000  ) {
        lad(200, 200, '.progress-box-1', function(){
            mamture_progress.addClass('v1')
            lad(1000, 1000, '.progress-box-2',function(){
                mamture_progress.addClass('v2');
                lad(_number-1000, 5000-1000, '.progress-box-3',function(){
                    $('.progress-box-3').addClass('active');

                })
            });
        });
    };

    if ( _number >= 5000 && _number < 10000  ) {
        lad(200, 200, '.progress-box-1', function(){
            mamture_progress.addClass('v1')
            lad(1000, 1000, '.progress-box-2',function(){
                mamture_progress.addClass('v2')
                lad(5000, 5000, '.progress-box-3', function(){
                    mamture_progress.addClass('v3')
                    lad(_number-5000, 10000-5000, '.progress-box-4',function(){
                        $('.progress-box-4').addClass('active');

                    })
                })
            });
        });
    };

    if ( _number >= 10000) {
        lad(200, 200, '.progress-box-1', function(){
            mamture_progress.addClass('v1')
            lad(1000, 1000, '.progress-box-2',function(){
                mamture_progress.addClass('v2')
                lad(5000, 5000, '.progress-box-3', function(){
                    mamture_progress.addClass('v3')
                    lad(10000, 10000, '.progress-box-4',function(){
                        mamture_progress.addClass('v4')
                        lad(_number-10000,10000000,'.progress-box-5')
                    })
                })
            });
        });
    };

    /*
     @number : 成长值
     @max : 最大值
     @callback : 回调方法
     */
    function lad(number, max, cls, callback){
        l = 0;
        timer = setInterval(function(){
            if ( number <= 200 ) {
                l++;
            }else if( number > 200 && number <= 1000 ){
                l+=5;
            }else if( number > 1000 && number <= 5000 ){
                l+=10;
            }else if( number > 5000 && number <= 10000 ){
                l+=20;
            }else{
                l+=30;
            };

            pro = (l/max)*3.7;              //100为  div的长度
            if ( l >= number ) {
                clearInterval(timer);
                if ( callback ) callback();   //回调
            };
            $(cls).css({
                width : pro+'em'
            })
        },1)
    }
})();


  • 写回答

1条回答 默认 最新

  • devmiao 2017-03-03 00:08
    关注
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?