如果日期尚未显示,如何仅将日期附加到聊天中?

时间:2017-05-26 08:26:29

标签: javascript jquery

我正在开发一个聊天程序,现在我正在尝试附加一个显示日期的div。这很容易, HOWEVER ,我只想将带有日期信息的div附加到#chat,如果它尚未附加。

FURTHERMORE ,由于日期信息以编程方式更改,因此并不总是相同。所以可以附加日期信息的多个div,如果信息不一样。

有关如何做到的任何想法?

这是我的客户端代码。同样,现在无论如何都会显示日期。

socket.on("update", function(time){
                var newDate = new Date(time);
                var weekday = new Array(7);
                weekday[1] = "Monday";
                weekday[2] = "Tuesday";
                weekday[3] = "Wednesday";
                weekday[4] = "Thursday";
                weekday[5] = "Friday";
                weekday[6] = "Saturday";
                weekday[7] = "Sunday";
                var day = weekday[newDate.getDay()];
                var hour = newDate.getHours();
                var minutes = newDate.getMinutes();
                $("#chat").append('<div class="update">'+day+" "+hour+"."+minutes+'</div>');     
        }); 

4 个答案:

答案 0 :(得分:1)

您可以通过3种方式执行此操作,您可以从.update进行检查,也可以设置标记:

var updated = 0;
socket.on("update", function(time) {
    //....
    if (!updated) {
        $("#chat").append('<div class="update">'+day+" "+hour+"."+minutes+'</div>');
        updated = 1;
    }
}

if (!$('.update').length) {
    $("#chat").append('<div class="update">'+day+" "+hour+"."+minutes+'</div>');
}

或者您创建了一个哈希(我使用了base64)并检查了该哈希值,如果您允许多次插入但不能在每次插入后重复一次。

var updated = false;
socket.on("update", function(time) {
    //....
    var dateToWrite = day+" "+hour+"."+minutes;
    var hash = btoa(dateToWrite);
    if (!updated || updated !== hash) {
        $("#chat").append('<div class="update">' + dateToWrite + '</div>');
        updated = hash;
    }
}

答案 1 :(得分:1)

首先 - 数组从0开始,而不是1.第二件事 - 我将它重命名为weekdays(而不是weekday),因为它是它们的列表。第三件事 - 最好将数组创建为一个调用 - weekdays = [ 'monday', 'tuesday' ...]。第四件事 - 我不知道你的聊天窗口结构,但你可以得到$('#chat')并且它返回它并且它是孩子。因此,获取最后一个子元素或更容易,因为你使用jQuery,你可以通过css $('#chat .msg:last-child')调用,这意味着进入id聊天找到类msg并获得它的最后一次出现。然后检查它是否已包含日期。

编辑:抱歉,只是注意到你想要整个聊天窗口。然后 - 只需获取$('#chat .update').text()并检查是否有日期。

答案 2 :(得分:0)

检查.update是否有内部文字。

if($(".update").innerText != ''){
  //append
}

答案 3 :(得分:0)

您需要使用以下代码检查第一个div是否有日期:

if(!$("#chat").find('.update').length) {
    $("#chat").append('<div class="update">'+day+" "+hour+"."+minutes+'</div>');
}

只需用

替换上面的代码即可
$("#chat").append('<div class="update">'+day+" "+hour+"."+minutes+'</div>');

由于