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をずっとだましました。」

-「回」の終わりに「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 に答える