1

次の方法でライブタイムスタンプの更新を行っています。

 var refreshtimest;

function refreshtimes() {

    var allt = '';

    $("abbr[class=livetimestamp]").each(function () {
        var did = $(this).attr("id");
        did = did.replace("dtime", "");
        var tit = $(this).data("utime");

        allt += ':{}' + did + ',/:{}' + tit;
    });

    $.ajax({
        async: "false",
        type: "POST",
        url: "refreshtimes.php",
        data: {
            alltimes: allt
        },
        success: function (response) {
            if (response.length > 0) {

                var res = response.split("<>");
                var rres = res.length - 1;
                var x = 0;
                var id;

                while (x <= rres) {
                    if (strpos(res[x], ',/') !== false) {
                        id = parseInt(res[x]);
                    } else if (id != "undefined") {

                        document.getElementById("dtime" + id).innerHTML = res[x];
                    }
                    x++;
                }

            }
        }
    });

    refreshtimest = setTimeout("refreshtimes()", 60000);
}

refreshtimest = setTimeout("refreshtimes()", 2000);

OK、これが JavaScript です。取得した文字列の解析により、次のように送信されます。

5,/<>36 minutes ago<>2,/<>September 5 at 11:52am<>3,/<>September 5 at   11:48am<>72,/<>September 4 at 4:43pm<>73,/<>September 4 at 3:29pm<>33,/<>September 4 at 3:08pm<>16,/<>September 4 at 2:19pm<>70,/<>September 4 at 2:46pm<>0,/<>September 4 at 3:20pm<>4,/<>September 4 at 3:22pm<>71,/<>September 3 at 1:04pm<>6,/<>September 3 at 3:20pm<>7,/<>September 3 at 3:18pm<>8,/<>September 3 at 3:17pm<>9,/<>September 3 at 3:14pm

私の問題は、ID を設定する必要があることです。応答は 5,/<> 読み取り可能な時間形式を返します

一方、5 は html を更新するための ID です

idを知らずにhtmlを更新したいけどサーバーには1投稿だけにしておきたいのですが、

クラス livetimestamp ですべての abbr を選択し、それぞれに ajax 呼び出しを送信するのは非生産的であり、単一の文字列のほうが聞こえが良くなります。上記の js コードからわかるように、この文字列では、var が行ったように id をデータとともに送信します。ユータイム」)。

クラス livetimestamp を使用して各 abbr からデータのみを送信したいのですが、これらを ID なしで識別できるようにしたいと考えています。

class=livetimestamp ごとに別のループのようなものですが、取得した応答から更新を実行するか、ID が設定されていないと仮定して、最初から選択されたそれぞれに適用します。

理由は私がしたいです

<abbr class="livetimestamp" data-utime"xxxx">html</abbr>

いいえ

<abbr class="livetimestamp" data-utime"xxxx" id="words_numbers">html</abbr>

ID が一意である必要があるか、カウンターを設定する必要があり、これらのカウンターが livetimestamp クラスを必要とするさまざまなセクションと混在してはならないため、ID を設定し続けることはサーバー上で非生産的です。そのため、クラスのみで動作するようにすることは素晴らしいことです。

4

1 に答える 1

3

基本的に、そもそもIDを使用する必要はないと思います..

このセレクターを使用する$("abbr[class=livetimestamp]") と、DOM が上から順に解析され、すべての要素が順番に選択されます。

したがって、要素の ID を送信する代わりに、Times 自体をカンマ区切りの文字列として送信できます。これは順番に並べられています。次に、サーバーで時間を更新して、同じ形式に戻します。

于 2012-09-12T21:16:59.953 に答える