我正在开发一个聊天程序,现在我正在尝试附加一个显示日期的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>');
});
答案 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>');
由于