Номер приращения JQuery / JavaScript - PullRequest
2 голосов
/ 30 июля 2009

Я пытаюсь увеличивать число на заданное значение каждую секунду и сохраняю форматирование с использованием JavaScript или JQuery

Я изо всех сил пытаюсь это сделать.

Скажи, что у меня есть такой номер:

1412015

число, которое можно увеличивать на каждую секунду, является переменным, оно может быть любым между 0,1 и 2.

Возможно ли, если значение, которое необходимо увеличивать каждую секунду, равно 0,54 для увеличения числа и имеет следующий вывод:

1 412 016
1 412 017
1412018

Спасибо

Eef

Ответы [ 3 ]

3 голосов
/ 30 июля 2009

Я не совсем уверен, что понимаю ваш случай приращения и то, что вы хотите показать. Однако я решил вмешаться в решение для форматирования числа.

У меня есть две версии подпрограммы числового формата, одна из которых анализирует массив, а другая - форматирует с помощью регулярного выражения. Я признаю, что их нелегко читать, но я с удовольствием подходил к этому подходу.

Я пытался описать строки комментариями на случай, если вам интересно

Версия для анализа массива:

function formatNum(num) {
    //Convert a formatted number to a normal number and split off any 
    //decimal places if they exist
    var parts = String( num ).replace(/[^\d.]-/g,'').split('.');
    //turn the string into a character array and reverse
    var arr = parts[0].split('').reverse();

    //initialize the return value
    var str = '';

    //As long as the array still has data to process (arr.length is 
    //anything but 0)
    //Use a for loop so that it keeps count of the characters for me
    for( var i = 0; arr.length; i++ ) {
        //every 4th character that isn't a minus sign add a comma before 
        //we add the character
        if( i && i%3 == 0 && arr[0] != '-' ) {
            str  = ',' + str ;
        }

        //add the character to the result
        str  = arr.shift() + str ;
    }

    //return the final result appending the previously split decimal place 
    //if necessary
    return str + ( parts[1] ? '.'+parts[1] : '' );
}

Версия регулярного выражения:

function formatNum(num) {
    //Turn a formatted number into a normal number and separate the 
    //decimal places
    var parts = String( num ).replace(/[^\d.]-/g,'').split('.');
    //reverse the string
    var str = parts[0].split('').reverse().join('');
    //initialize the return value
    var retVal = '';

    //This gets complicated. As long as the previous result of the regular 
    //expression replace is NOT the same as the current replacement, 
    //keep replacing and adding commas.
    while( retVal != (str = str.replace(/(\d{3})(\d{1,3})/,'$1,$2')) ) {
        retVal = str;
    }

    //If there were decimal points return them back with the reversed string
    if( parts[1] ) {
        return retVal.split('').reverse().join('') + '.' + parts[1];
    }

    //return the reversed string
    return retVal.split('').reverse().join('');
}

Предполагая, что вы хотите выводить форматированное число каждую секунду с шагом 0,54, вы можете использовать интервал для выполнения приращения и вывода.

Пример Super Short Firefox только с Firebug:

var num = 1412015;

setInterval(function(){
    //Your 0.54 value... why? I don't know... but I'll run with it.
    num += 0.54;
    console.log( formatNum( num ) );
},1000);

Вы можете увидеть все это в действии здесь: http://jsbin.com/opoze

2 голосов
/ 30 июля 2009

Для увеличения значения каждую секунду используйте эту структуру:

var number = 0; // put your initial value here

function incrementNumber () {
    number += 1; // you can increment by anything you like here
}

// this will run incrementNumber() every second (interval is in ms)
setInterval(incrementNumber, 1000); 

Это отформатирует цифры для вас:

function formatNumber(num) {
   num = String(num);

   if (num.length <= 3) {
      return num;
   } else {
      var last3nums = num.substring(num.length - 3, num.length);
      var remindingPart = num.substring(0, num.length - 3);
      return formatNumber(remindingPart) + ',' + last3nums;
   }
}
1 голос
/ 30 июля 2009
function rounded_inc(x, n) {
  return x + Math.ceil(n);
}

var x = 1412015;
x = rounded_inc(x, 0.54);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...