2013-02-07 114 views
0

我有以下的jQuery函數:jQuery的字符串+添加額外的字符開始

function siteCounterUpdate(n) { 
    $('ul#indexSiteCounterBottom').empty(); 
    for(i=0;i<9;i++) { 

      //alert(n.toString()[i]); 

     $('ul#indexSiteCounterBottom').append('<li>'+n.toString()[i]+'</li>'); 
     $('ul#indexSiteCounterBottom li:nth-child(3n)').addClass('extra-margin'); 
    } 
} 

這個函數接收數字(字符串),如果它有9個字符它完美的作品。 9是全長。

但是,如果數字是7個字符長,我需要將前2個項目替換爲HTML無間斷空格。

&nbsp; 

我很努力去理解我該如何做到這一點。

例如: 6字符長的串將是 1. NBSP 2. NBSP 3. NBSP 4 - 9的字符串。

任何建議將是偉大的。

THX

回答

2

下面是如何墊字符串:

function padString (str, len, padWith) { 
    var padLength = len - str.length; 
    return padLength < 1 ? str : Array(padLength + 1).join(padWith) + str; 
} 

示例用法:

padString('1234567899', 9, '&nbsp;'); // "1234567899" 
padString('123456789', 9, '&nbsp;'); // "123456789" 
padString('12345678', 9, '&nbsp;'); // "&nbsp;12345678" 
padString('1234567', 9, '&nbsp;'); // "&nbsp;&nbsp;1234567" 
padString('234567', 9, '&nbsp;');  // "&nbsp;&nbsp;&nbsp;234567" 

這裏的小提琴:http://jsfiddle.net/8JdwP/

+0

三江源 - 真的很好:) – Adam

1

您還可以使用兩個for循環,像這樣對您的字符串n9&nbsp;的和0n間數:

function siteCounterUpdate(n) { 
    var target = $('ul#indexSiteCounterBottom').empty(); 

    for (var i=n.length;i<9;i++) { 
     target.append('<li>&nbsp;</li>'); 
    } 

    // `i` doesn't have to be declared again because there's no block 
    // scope in JavaScript, but I think it looks ugly otherwise :(. 
    for (var i=0;i<n.length;i++) { 
     target.append('<li>' + n + '</li>'); 
    } 
} 
1

我可能會搞不清楚你想要什麼,但你能不能右對齊計數器,所以你並不需要的空間?

如果不是,您可以創建一個像描述的here這樣的pad功能。

0
while (yourString.length < 9) 
{ 
    yourString = "\u00A0" + yourString; 
} 

demo