在Javascript中使值复数(大于,小于)

时间:2011-05-29 20:32:54

标签: javascript counter pluralize

我有以下代码:

    $(function(){
          var total_click = 0;
          $("#mapKey a.showKey").click(function(){
            total_click = total_click + 1;
            $("#counter").text("I cheated " + total_click + " whole" + (total_click = 1 ? + ' time' + ((total_click > 1) ? 's ' : ' ') : ''));
return false;
          });
        });

我正试图让它输出:

点击一次:“我整整都被骗了一次。”

不止一次点击:“我一直欺骗X.”

- 在“时代”结束时使用's'。

计数器工作正常,这只是最后一部分,使“时间”或“时间”适当显示我遇到了困难。

任何想法我做错了什么?

谢谢!

4 个答案:

答案 0 :(得分:4)

以下是您的问题:total_click = 1。尝试将其更改为total_click == 1。我不明白为什么你在那里有条件,因为它不会像你期望的那样工作。试试$("#counter").text("I cheated " + total_click + " whole time" + ((total_click == 1) ? ' ' : 's '));

答案 1 :(得分:0)

您没有正确使用三元运算符,并且还将total_click指定为1而不是检查其值。我建议将其移至函数中以简化操作。

function pluralize(singular, times) {
    if (times == 1) return singular;
    else return singular + 's';
}

然后将字符串更改为

var text = "I cheated " + clicks + " whole " + pluralize("time", clicks);

这是一个example

答案 2 :(得分:0)

  $(function(){
          var total_click = 0;
          $("#mapKey a.showKey").click(function(){
            total_click = total_click + 1;
            $("#counter").text("I cheated " + total_click + " whole " + (total_click == 1 ? "time" : "times");
return false;
          });
        });

答案 3 :(得分:0)

对于一些简单的案例,可以使用建议的实现,但是它不能扩展到更大的问题集,并且不适用于多种语言(或者它会变得非常快)。

考虑到这一点,我创建了一个非常简单的JavaScript库,可以用来复制几乎任何语言的单词。它透明地将CLDR数据库用于多个语言环境。它的API非常简约,集成非常简单。它被称为Numerous

我还写了一篇小介绍文章:«How to pluralize any word in different languages using JavaScript?»。

随意在您的项目中使用它。我也很高兴收到您的反馈意见!