给数字添加 st、nd、rd 和 th(序数)后缀

2022-01-17 00:00:00 numbers jquery javascript

我想根据当前日期动态生成一串文本.因此,例如,如果是第 1 天,那么我希望我的代码生成 = "Its the <dynamic>1*<dynamic string>st</dynamic string>*</动态>".

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>".

总共有 12 天,所以我做了以下事情:

There are 12 days in total so I have done the following:

  1. 我已经设置了一个循环 12 天的 for 循环.

  1. I've set up a for loop which loops through the 12 days.

在我的 html 中,我给了我的元素一个唯一的 id 来定位它,见下文:

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>

  • 然后,在我的 for 循环中,我有以下代码:

  • 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"
    }
    

  • 更新

    这是请求的整个 for 循环:

    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) {
                }
            }
        }
    

    推荐答案

    规则如下:

    • st 用于以 1 结尾的数字(例如 1st,首先发音)
    • nd 用于以 2 结尾的数字(例如 92nd,发音为 90 秒)
    • rd 用于以 3 结尾的数字(例如 33rd,发音为 33)
    • 作为上述规则的一个例外,所有以 11、12 或 13 结尾的teen"数字都使用 -th(例如 11th,发音为 11th,112th,发音为一百 [和] 十二)
    • th 用于所有其他数字(例如 9th,发音为 ninth).

    以下 JavaScript 代码(在 2014 年 6 月重写)实现了这一点:

    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";
    }
    

    0-115 之间数字的示例输出:

    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
    

    相关文章