【问题标题】:Making a value plural (Greater than, Less than) in Javascript在Javascript中制作复数值(大于,小于)
【发布时间】:2011-09-04 10:38:59
【问题描述】:

我有以下代码:

    $(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;
          });
        });

我正试图让它像这样输出:

点击一次:“我作弊了1次。”

多次点击:“我作弊了 X 次。”

-- 在“times”的末尾有一个's'。

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

任何想法我做错了什么?

谢谢!

【问题讨论】:

    标签: javascript counter pluralize


    【解决方案1】:

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

    【讨论】:

    • 还有一个错位的+号
    • 一般我先开始写只读属性/常量。这样,您将永远无法创建这样的错误。如果你编译你的代码(用其他语言),它甚至会抛出一个编译器错误。现在的模式是:(1 == total_click)
    • 呸! Yoda comparisons...不寒而栗
    【解决方案2】:
      $(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;
              });
            });
    

    【讨论】:

    • 谢谢大家。我选择了这个(尽管最后缺少一个')': $("#counter").text("I cheated " + total_click + " whole " + (total_click == 1 ? "time" : "次")); ---- 再次感谢!
    【解决方案3】:

    您没有正确使用三元运算符,并且还将 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

    【讨论】:

      【解决方案4】:

      可以将建议的实现用于微不足道的情况,但它不适用于更大的问题集,并且不适用于多种语言(或者它会很快变得丑陋)。

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

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

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

      【讨论】:

        猜你喜欢
        • 2017-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-09
        • 1970-01-01
        • 2018-03-06
        • 2021-11-05
        相关资源
        最近更新 更多