2009-07-30 5 views
2

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

Я изо всех сил, чтобы сделать это.

Скажем, у меня есть ряд так:

число которых это может быть увеличен на каждый второй переменной это может быть что угодно beween 0,1 и 2.

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

1.412.016
1.412.017
1.412.018

Благодаря

Eef

ответ

3

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

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

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

Массив разборе версия:

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] : ''); 
} 

Обычная версия Expression:

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, вы можете используйте интервал, чтобы сделать ваш инкремент и вывод.

сверхкоротких 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

1
function rounded_inc(x, n) { 
    return x + Math.ceil(n); 
} 

var x = 1412015; 
x = rounded_inc(x, 0.54); 
2

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

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; 
    } 
} 
+0

Спасибо, я не делаю, что много JavaScript, можно форматировать число вроде 1412016? – RailsSon

+0

Обновлен мой код, чтобы включить форматтер. – RaYell

+0

Ваш код применим только к номерам больше 6. Что делать, если он хочет 1,548? –