2014-12-08 114 views
0

我试图修复this widgetdownload),因为它表示日期是每个月的第1个月,第2个月和第3个月的日期,我不能为我的生活找出它为什么不是加工。我对JS没有任何经验,但我对C#非常熟练,所以语法不太难理解。显示正确的日期后缀

我意识到这行是罪魁祸首:

document.getElementById("monthFC").innerHTML = monthFC + " " + dateFC + "TH"; 

我试着用这个代码(我知道这是不正确的11日,12日和13日),但它仍不能取代它:

if (dateFC % 10 == 1) 
{ 
    document.getElementById("monthFC").innerHTML = monthFC + " " + dateFC + "ST"; 
} 
else if (dateFC % 10 == 2) 
{ 
    document.getElementById("monthFC").innerHTML = monthFC + " " + dateFC + "ND"; 
} 
else if (dateFC % 10 == 3) 
{ 
    document.getElementById("monthFC").innerHTML = monthFC + " " + dateFC + "RD"; 
} 
else 
{ 
    document.getElementById("monthFC").innerHTML = monthFC + " " + dateFC + "TH"; 
} 

据我所知,语法是正确的,所以我只能假设我正在运用我的模运算符不正确(在C#中,我猜想它将数字存储为一个字符串,这就是为什么它可能会失败,但我不知道这是否适用于此)。如果有人能指出我正确的方向,我会非常感激!提前致谢。

回答

1

//有很多地方可以使用switch语句,但这是其中之一。

function nth(n){ 
    if(n%1) return n; 
    var n1= n%100; 
    if(n1>3 && n1<21) return n+'th'; 
    switch(n1%10){ 
     case 1: return n+'st'; 
     case 2: return n+'nd'; 
     case 3: return n+'rd'; 
     default: return n+'th'; 
    } 
} 
var A= []; 
for(var i= 1; i<32; i++)A.push(nth(i)); 

A.join(', '); 

//返回值:

1st, 2nd, 3rd, 4th, 5th, 6th, 7th, 8th, 9th, 10th, 11th, 12th, 13th, 
14th, 15th, 16th, 17th, 18th, 19th, 20th, 21st, 22nd, 23rd, 24th, 
25th, 26th, 27th, 28th, 29th, 30th, 31st 
+0

谢谢,这真是整齐码!我已经对它进行了排序(对下面的人进行了评论),但是我想要合并你的代码,所以我现在可以使用它。 – tom982 2014-12-08 05:03:06