我想动态生成基于当前一天的文本字符串。所以,例如,如果它是第1天,那么我想我的代码生成=“它的<动态>1*<动态字符串>st</动态字符串>*</动态>”。
总共有12天,所以我做了以下事情:
我设置了一个for循环,循环12天。
在我的html中,我已经给了我的元素一个唯一的id来瞄准它,如下所示:
<h1 id="dynamicTitle" class="CustomFont leftHeading shadow">On The <span></span> <em>of rest of generic text</em></h1>
然后,在我的for循环中,我有以下代码:
$ (" # dynamicTitle跨度”). html(我);
Var day = i;
If (day == 1) {
Day = I +“st”;
} else if (day == 2) {
日= I + "nd"
} else if (day == 3) {
Day = I + "rd"
}
更新
这是请求的整个for循环:
$(document).ready(function () {
for (i = 1; i <= 12; i++) {
var classy = "";
if (daysTilDate(i + 19) > 0) {
classy = "future";
$("#Day" + i).addClass(classy);
$("#mainHeading").html("");
$("#title").html("");
$("#description").html("");
} else if (daysTilDate(i + 19) < 0) {
classy = "past";
$("#Day" + i).addClass(classy);
$("#title").html("");
$("#description").html("");
$("#mainHeading").html("");
$(".cta").css('display', 'none');
$("#Day" + i + " .prizeLink").attr("href", "" + i + ".html");
} else {
classy = "current";
$("#Day" + i).addClass(classy);
$("#title").html(headings[i - 1]);
$("#description").html(descriptions[i - 1]);
$(".cta").css('display', 'block');
$("#dynamicImage").attr("src", ".." + i + ".jpg");
$("#mainHeading").html("");
$(".claimPrize").attr("href", "" + i + ".html");
$("#dynamicTitle span").html(i);
var day = i;
if (day == 1) {
day = i + "st";
} else if (day == 2) {
day = i + "nd"
} else if (day == 3) {
day = i + "rd"
} else if (day) {
}
}
}
Intl。PluralRules,标准方法。
我只是想在这里放弃做这个的规范方法,因为似乎没有人知道它。不要白费力气。
如果你想让你的代码
自我记录
易于本地化
用现代标准
-这才是正确的方法。
const english_ordinal_rules = new Intl。PluralRules("en", {type: "ordinal"});
Const后缀= {
一:“圣”,
二:“和”,
一些:“路”,
其他:“th”
};
函数序数(number/*: number */) {
Const category = english_ordinal_rules.select(number);
Const suffix =后缀[类别];
返回(数字+后缀);
} // ->字符串
const test =数组(201)
.fill ()
.map((_, index) => index - 100)
. map(顺序)
. join (" ");
console.log(测试);
Intl。PluralRules构造函数(ECMA-402草案)
统一码的六个多元类别
Code-golf
虽然我不建议用你的代码打高尔夫,杀死可读性,但我为那些高尔夫球手想出了一个(92字节):
n=>n+{e:"st",o:"nd",w:"rd",h:"th"}[new Intl.PluralRules("en",{type:"ordinal"}).select(n)[2]]
规则如下:
St用于以1结尾的数字(例如1st,发音为first)
Nd与以2结尾的数字连用(例如92nd,发音为ninety-second)
Rd与以3结尾的数字连用(例如33rd,发音为33third)
作为上述规则的例外,所有以11、12或13结尾的“青少年”数字都使用-th(例如,11,发音为111,112,
读作一百零十二位)
Th用于所有其他数字(例如:9th,发音为ninth)。
以下JavaScript代码(在14年6月重写)实现了这一点:
function ordinal_suffix_of(i) {
var j = i % 10,
k = i % 100;
if (j == 1 && k != 11) {
return i + "st";
}
if (j == 2 && k != 12) {
return i + "nd";
}
if (j == 3 && k != 13) {
return i + "rd";
}
return i + "th";
}
0-115之间数字的示例输出:
0 0th
1 1st
2 2nd
3 3rd
4 4th
5 5th
6 6th
7 7th
8 8th
9 9th
10 10th
11 11th
12 12th
13 13th
14 14th
15 15th
16 16th
17 17th
18 18th
19 19th
20 20th
21 21st
22 22nd
23 23rd
24 24th
25 25th
26 26th
27 27th
28 28th
29 29th
30 30th
31 31st
32 32nd
33 33rd
34 34th
35 35th
36 36th
37 37th
38 38th
39 39th
40 40th
41 41st
42 42nd
43 43rd
44 44th
45 45th
46 46th
47 47th
48 48th
49 49th
50 50th
51 51st
52 52nd
53 53rd
54 54th
55 55th
56 56th
57 57th
58 58th
59 59th
60 60th
61 61st
62 62nd
63 63rd
64 64th
65 65th
66 66th
67 67th
68 68th
69 69th
70 70th
71 71st
72 72nd
73 73rd
74 74th
75 75th
76 76th
77 77th
78 78th
79 79th
80 80th
81 81st
82 82nd
83 83rd
84 84th
85 85th
86 86th
87 87th
88 88th
89 89th
90 90th
91 91st
92 92nd
93 93rd
94 94th
95 95th
96 96th
97 97th
98 98th
99 99th
100 100th
101 101st
102 102nd
103 103rd
104 104th
105 105th
106 106th
107 107th
108 108th
109 109th
110 110th
111 111th
112 112th
113 113th
114 114th
115 115th
你只有12天?我想让它只是一个简单的查找数组:
var suffixes = ['','st','nd','rd','th','th','th','th','th','th','th','th','th'];
然后
var i = 2;
var day = i + suffixes[i]; // result: '2nd'
or
var i = 8;
var day = i + suffixes[i]; // result: '8th'
Intl。PluralRules,标准方法。
我只是想在这里放弃做这个的规范方法,因为似乎没有人知道它。不要白费力气。
如果你想让你的代码
自我记录
易于本地化
用现代标准
-这才是正确的方法。
const english_ordinal_rules = new Intl。PluralRules("en", {type: "ordinal"});
Const后缀= {
一:“圣”,
二:“和”,
一些:“路”,
其他:“th”
};
函数序数(number/*: number */) {
Const category = english_ordinal_rules.select(number);
Const suffix =后缀[类别];
返回(数字+后缀);
} // ->字符串
const test =数组(201)
.fill ()
.map((_, index) => index - 100)
. map(顺序)
. join (" ");
console.log(测试);
Intl。PluralRules构造函数(ECMA-402草案)
统一码的六个多元类别
Code-golf
虽然我不建议用你的代码打高尔夫,杀死可读性,但我为那些高尔夫球手想出了一个(92字节):
n=>n+{e:"st",o:"nd",w:"rd",h:"th"}[new Intl.PluralRules("en",{type:"ordinal"}).select(n)[2]]