我试图修复this widget(download),因为它说日期是每个月的01,02,03日,我不能因为我的生活解决了为什么它不起作用。我没有任何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#中我猜它会将数字存储为字符串这就是它失败的原因,但我不知道这是否适用于此。如果有人能指出我正确的方向,我会非常感激!提前谢谢。
答案 0 :(得分: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