Как добавить запятые или пробелы для группировки каждой третьей цифры

#jquery

#jquery

Вопрос:

Я внедряю плагин numscroller jquery в свою программу. Однако у меня возникают проблемы с добавлением запятых или пробелов для группировки каждых трех цифр.

Вот мой код:

 (function($){
$(window).on("load",function(){
    $(document).scrollzipInit();
    $(document).rollerInit();
});
$(window).on("load scroll resize", function(){
    $('.numscroller').scrollzip({
        showFunction    :   function() {
                                numberRoller($(this).attr('data-slno'));
                            },
        wholeVisible    :     false,
    });
});
$.fn.scrollzipInit=function(){
    $('body').prepend("<div style='position:fixed;top:0px;left:0px;width:0;height:0;' id='scrollzipPoint'></div>" );
};
$.fn.rollerInit=function(){
    var i=0;
    $('.numscroller').each(function() {
        i  ;
       $(this).attr('data-slno',i); 
       $(this).addClass("roller-title-number-" i);
    });        
};
$.fn.scrollzip = function(options){
    var settings = $.extend({
        showFunction    : null,
        hideFunction    : null,
        showShift       : 0,
        wholeVisible    : false,
        hideShift       : 0,
    }, options);
    return this.each(function(i,obj){
        $(this).addClass('scrollzip');
        if ( $.isFunction( settings.showFunction ) ){
            if(
                !$(this).hasClass('isShown')amp;amp;
                ($(window).outerHeight() $('#scrollzipPoint').offset().top-settings.showShift)>($(this).offset().top ((settings.wholeVisible)?$(this).outerHeight():0))amp;amp;
                ($('#scrollzipPoint').offset().top ((settings.wholeVisible)?$(this).outerHeight():0))<($(this).outerHeight() $(this).offset().top-settings.showShift)
            ){
                $(this).addClass('isShown');
                settings.showFunction.call( this );
            }
        }
        if ( $.isFunction( settings.hideFunction ) ){
            if(
                $(this).hasClass('isShown')amp;amp;
                (($(window).outerHeight() $('#scrollzipPoint').offset().top-settings.hideShift)<($(this).offset().top ((settings.wholeVisible)?$(this).outerHeight():0))||
                ($('#scrollzipPoint').offset().top ((settings.wholeVisible)?$(this).outerHeight():0))>($(this).outerHeight() $(this).offset().top-settings.hideShift))
            ){
                $(this).removeClass('isShown');
                settings.hideFunction.call( this );
            }
        }
        return this;
    });
};
function numberRoller(slno){
        var min=$('.roller-title-number-' slno).attr('data-min');
        var max=$('.roller-title-number-' slno).attr('data-max');
        var timediff=$('.roller-title-number-' slno).attr('data-delay');
        var increment=$('.roller-title-number-' slno).attr('data-increment');
        var numdiff=max-min;
        var timeout=(timediff*1000)/numdiff;
        numberRoll(slno,min,max,increment,timeout);

}
function numberRoll(slno,min,max,increment,timeout){//alert(slno "=" min "=" max "=" increment "=" timeout);
    if(min<=max){
        $('.roller-title-number-' slno).html(min);
        min=parseInt(min) parseInt(increment);
        setTimeout(function(){numberRoll(eval(slno),eval(min),eval(max),eval(increment),eval(timeout))},timeout);
    }else{
        $('.roller-title-number-' slno).html(max);
    }
}
})(jQuery);
 

Было бы здорово, если бы кто-нибудь мог предложить решение. Заранее спасибо.

Комментарии:

1. Спасибо @kbunarjo

2. Привет, Сарвар, если ответ помог, пожалуйста, отметьте его как принятый 🙂 если ответ не помог, дайте мне знать, и мы сможем попытаться решить его дальше!

Ответ №1:

Не просматривая всю вашу функцию, чтобы попытаться добавить запятые, вы могли бы просто запустить последнюю строку через функцию, которая добавит ее.

Вы можете использовать следующую функцию, которая будет разделять строку после каждых трех символов:

 var result = add_comma_grads(12345678);

function add_comma_grads(string){
    var output = string.split( /(?=(?:...)*$)/ );
    return output.join(", ");
}

//this will output 12, 345, 678
 

Вы можете изменить разделитель в output.join(", "); from ", " на любой другой, который вы хотите использовать для разделения чисел (т. Е. Вы можете удалить пробел, если хотите).

Вот ссылка на рабочую скрипку

Комментарии:

1. Спасибо @Frits за ваш ответ. Но у меня это не работает. Не могли бы вы дать мне другое решение, совместимое с моей функцией. Заранее спасибо.

2. Не проблема — что не работает? Какие ошибки вы получаете? Где вы это реализовали? Сможете ли вы воспроизвести проблему в jsfiddle?