Javascript 无法获取要自动更新的聊天时间戳
我有以下代码,没有刷新就无法更新聊天时间戳。我是javascript新手Javascript 无法获取要自动更新的聊天时间戳,javascript,Javascript,我有以下代码,没有刷新就无法更新聊天时间戳。我是javascript新手 功能时间间隔(日期){ var秒数=数学地板((新日期()-Date)/1000); var间隔=秒/31536000; 如果(间隔>1){ 返回数学。楼层(间隔)+“年”; } 间隔=秒/2592000; 如果(间隔>1){ 返回数学下限(间隔)+“月”; } 间隔=秒/86400; 如果(间隔>1){ 返回数学地板(间隔)+“天”; } 间隔=秒/3600; 如果(间隔>1){ 返回数学楼层(间隔)+“小时”; } 间
功能时间间隔(日期){
var秒数=数学地板((新日期()-Date)/1000);
var间隔=秒/31536000;
如果(间隔>1){
返回数学。楼层(间隔)+“年”;
}
间隔=秒/2592000;
如果(间隔>1){
返回数学下限(间隔)+“月”;
}
间隔=秒/86400;
如果(间隔>1){
返回数学地板(间隔)+“天”;
}
间隔=秒/3600;
如果(间隔>1){
返回数学楼层(间隔)+“小时”;
}
间隔=秒/60;
如果(间隔>1){
返回数学楼层(间隔)+“分钟”;
}
返回数学地板(秒)+“秒”;
}
设置间隔(时间间隔,1000);
日变化率=24*60*60*1000;
log(timeSince(新日期(Date.now()-aDay));
log(timeSince(新日期(Date.now()-aDay*2));
const dates=新日期(message.timestamp)
如果(message.user===currentUser)位置='right';
const messageItem=`
${timeSince(dates)}
我试过:
setInterval(timeSince,1000)代码>和设置间隔(timeSince(),1000)
和设置间隔(timeSince(date,1000);
并在函数中的不同位置分别尝试,无法开始工作。timeSince
只返回带持续时间的格式化字符串。在此函数上设置间隔实际上没有任何作用。您必须使用返回值
setInterval(function(){
var time = timeSince(message.timestamp);
//You can use a better selector here,
//but without more information, this is the best I can do.
document.getElementsByClassName("small")[0].innerHTML = time;
}, 1000);
找到了一半的解决方案。我必须在调用函数的函数下插入setInterval,timesince函数位于该函数下。现在,整个过程在我设置的时间间隔之后更新,而不仅仅是时间,但是设置1分钟的更新间隔对我来说很好。
显然,因为我在一个函数下有多个函数,所以setInterval不起作用,或者在我的例子中不起作用。
draw message是timeSince函数所在的函数
也许是因为我在没有得到正确的帮助之前没有提供这些信息
解决方案:
这:
或者这个:
function getConversation(recipient) {
$.getJSON(`/api/v1/message/?target=${recipient}`, function (data) {
messageList.children('.message').remove();
for (let i = data['results'].length - 1; i >= 0; i--) {
drawMessage(data['results'][i]);
}
**setInterval(getConversation(recipient), 1000);**
messageList.animate({scrollTop: messageList.prop('scrollHeight')});
});
}
谢谢David的帮助谢谢你的输入。我试过了,但仍然没有成功。我保持原样,并更改了你的建议。也许我应该指出,上面所附的所有内容都是.js文件中的代码。在html中,它们在一个div中被调用,类为“messages”。上述代码的其余部分的结尾如下:……messageItem=${timeSince(dates)}
${message.body}
;$(messageItem)。附加到(“#messages”);感谢您的耐心,代码放在html文件的底部我认为更新您的建议后的问题在console.log中,但无法解决
function getConversation(recipient) {
$.getJSON(`/api/v1/message/?target=${recipient}`, function (data) {
messageList.children('.message').remove();
for (let i = data['results'].length - 1; i >= 0; i--) {
drawMessage(data['results'][i]);
}
**setInterval(getConversation(recipient), 1000);**
messageList.animate({scrollTop: messageList.prop('scrollHeight')});
});
}