将每个数字换行并将前缀加到X位数

时间:2012-06-13 15:18:17

标签: javascript jquery

是否有可能在Javascript中包装每个字符,如果它少于X个数字,则前置零?

我得到了什么:

var votes = 2;
//or
var votes = 123;
//or
var votes = 4321;

应该是什么样的:

<span>0</span><span>0</span><span>0</span><span>2</span>
//or
<span>0</span><span>1</span><span>2</span><span>3</span>
//or
<span>4</span><span>3</span><span>2</span><span>1</span>

所以结果应该是一个四位数的数字。

4 个答案:

答案 0 :(得分:5)

这是一个棘手的版本:​​

var votes = 123;
("0000" + votes).slice(-4); /* 0123 */

因此,要将每个数字包装在<span>中,您可以使用$.map获取每个数字并将其包装到自己的元素中,就像在此示例中一样:http://jsfiddle.net/cZAWj/

var votes = 973;

$.map(("0000" + votes).slice(-4), function(digit) {
    $('<span/>', { text : digit }).appendTo($('body'));
});

答案 1 :(得分:3)

首先,让它看起来像一个字符串并填充它......

   function pad(number, length) {      
        var str = '' + number;
        while (str.length < length) {
            str = '0' + str;
        }       
        return str;
    }

然后你可以迭代它并在每个数字周围添加一个范围。然后将标记写为父元素的.html。

答案 2 :(得分:1)

一种方法是将数字转换为字符串并预先附加0直到达到所需的长度。

所以,如果你想要X个数字:

var strNb = "" + nb;
while (strNb.length < X){
  strNb = "0" + strNb
}

答案 3 :(得分:0)

function formatNumber(d, x) {
    var l = String(d).length;
    return (l<x?(Array(x-l).join('0') + d):String(d)).replace(/\d/g,"<span>$&</span>");
}