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);

好的,这就是 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

我的问题是我需要设置 ids,响应给出 5,/<>可读的时间格式

而 5 是更新 html 的 id

我想在不知道 id 的情况下更新 html,但只在服务器上保留一篇文章,

例子

选择所有带有类 livetimestamp 的缩写并为每个缩写发送一个 ajax 调用是徒劳的,使单个字符串听起来更好,在这个字符串中,正如您从上面的 js 代码中看到的那样,它像 var 一样发送 id 以及数据,data("时间”)。

我想开始只从每个缩写发送带有类 livetimestamp 的数据,但能够以某种方式在没有 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 类的不同部分混合。所以让它只与班级一起工作会很棒。

4

1 回答 1

3

基本上我认为你不需要首先使用 id ..

当您使用此选择器$("abbr[class=livetimestamp]") 时,它会按自上而下的顺序解析 DOM,并按顺序选择所有元素。

因此,您可以将 Times 本身作为逗号分隔的 sting 发送,而不是发送元素的 ID,它们是按顺序排列的。然后刷新服务器上的时间并以相同的格式返回。

于 2012-09-12T21:16:59.953 回答