1

我有以下代码:

    $(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”。

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

任何想法我做错了什么?

谢谢!

4

4 回答 4

4

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

于 2011-05-29T20:34:58.143 回答
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);

这是一个例子

于 2011-05-29T20:38:08.537 回答
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;
          });
        });
于 2011-05-29T20:38:33.943 回答
0

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

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

我还写了一篇介绍它的小文章:«如何使用 JavaScript 使不同语言中的任何单词复数?»。

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

于 2016-09-17T22:43:19.677 回答