次の方法でライブタイムスタンプの更新を行っています。
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 を設定し続けることはサーバー上で非生産的です。そのため、クラスのみで動作するようにすることは素晴らしいことです。