1

わかりました、投稿がたとえば5秒前に到着したときに、Facebookの投稿や通知などの自動時間増分のようなものを作成したいと思います。

jQueryを使用して、時間前にサーバーを解析することなく自動増加させるにはどうすればよいですか。

数時間から数日まで増加する可能性があります。

スクリプトを見つけて変更しようとしましたが、機能しません: ページのすべての投稿の時間を自動更新する jquery プラグイン

$.fn.UpdateSince = function(interval) {

    var times = this.map(function(){ return { e: $(this), t: parseInt($(this).html()) }; });

    var format = function(t) {
        if (t > 60) {
            return Math.floor(t / 60) + ' minutes ago'
        } else if(t > 3600){
            return Math.floor(t / 3600) + ' hours ago'
        } else if(t > 86400){
            return Math.floor(t / 86400) + ' days ago'
        } else {
            return t + ' seconds ago';
        }
    }

    var update = function(){
        $.each(times, function(i, o){
            o.e.html(format(Math.round((o.t + 1000))));
        });
    };

    window.setInterval(update, interval);
    update();

    return this;
}

$('.TimeSince').UpdateSince(1000);
4

2 に答える 2

2

これを行うtimeagoという非常に優れたプラグインが既にあります。

それを含めるだけです:

<script src="jquery.timeago.js" type="text/javascript"></script>

そしていくつかのコードを追加します:

$('abbr.timeago').timeago();

HTML は次のようになります。

<abbr class="timeago" title="2008-07-17T09:24:17Z">July 17, 2008</abbr>
于 2012-12-27T09:16:49.460 に答える
0

元のスクリプトから変数を削除したようですnow。実行するには、現在時刻を知る必要があります。

このgetTime()メソッドは、サーバーではなく、システム クロックから値を返します。

ちなみに、コード内の条件の順序を逆にする必要があります。最初に「日」、次に「時間」、次に「分」を配置します。

if(t > 86400) {
    return Math.floor(t / 86400) + ' days ago';
} else if(t > 3600) {
    return Math.floor(t / 3600) + ' hours ago';
} else if(t > 60) {
    return Math.floor(t / 60) + ' minutes ago';
} else {
    return t + ' seconds ago';
}

tそれ以外の場合、が より大きい場合、関数は常に「秒」を返し60ます。

于 2012-12-27T09:23:05.907 に答える