I would like to dynamically generate a string of text based on a current day. So, for example, if it is day 1 then I would like my code to generate = “Its the <dynamic>1*<dynamic string>st</dynamic string>*</dynamic>”.
There are 12 days in total so I have done the following:
I’ve set up a for loop which loops through the 12 days.
In my html I have given my element a unique id with which to target it, see below:
<h1 id="dynamicTitle" class="CustomFont leftHeading shadow">On The <span></span> <em>of rest of generic text</em></h1>
Then, inside my for loop I have the following code:
$("#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" }
UPDATE
This is the entire for loop as requested:
$(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) { } } }
Advertisement
Answer
The rules are as follows:
- st is used with numbers ending in 1 (e.g. 1st, pronounced first)
- nd is used with numbers ending in 2 (e.g. 92nd, pronounced ninety-second)
- rd is used with numbers ending in 3 (e.g. 33rd, pronounced thirty-third)
- As an exception to the above rules, all the “teen” numbers ending with 11, 12 or 13 use -th (e.g. 11th, pronounced eleventh, 112th, pronounced one hundred [and] twelfth)
- th is used for all other numbers (e.g. 9th, pronounced ninth).
The following JavaScript code (rewritten in Jun ’14) accomplishes this:
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"; }
Sample output for numbers between 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