【问题标题】:How to display current time with JavaScript without refreshing the page如何在不刷新页面的情况下使用 JavaScript 显示当前时间
【发布时间】:2020-09-27 18:47:07
【问题描述】:

我们目前通过以下 JavaScript 函数在 ColdFusion Web 应用程序中显示时间戳信息。当用户单击网页上的 HTML 按钮时调用此函数。问题是时间只是最后一页加载时的当前时间。因此,如果用户在页面上坐了一会儿,时间就会变得不准确。

在 JavaScript 中是否有更优雅、更准确的方法来做到这一点?或者 ColdFusion 有没有办法实时提取服务器时钟信息?

HTML 按钮

<input class="timerStart" id="startButton2" type="button" value="Insert Start Time" onclick="insertAtCaret('messageBody','---Start Time:#DateFormat(Now())# : #TimeFormat(Now())#---');" />

Javascript 代码

function insertAtCaret(areaID,text) {
    var txtarea = $("textarea[data-focused=true]")[0];
    if(txtarea!=undefined)
    {
        var scrollPos = txtarea.scrollTop; 
        var strPos = 0; 
        var br = ((txtarea.selectionStart || txtarea.selectionStart == '0') ? 
                   "ff" : (document.selection ? "ie" : false ) ); 
        if (br == "ie") { 
            txtarea.focus(); 
            var range = document.selection.createRange(); 
            range.moveStart ('character', -txtarea.value.length); 
            strPos = range.text.length; 
        } 
        else if (br == "ff") {strPos = txtarea.selectionStart;}
        var front = (txtarea.value).substring(0,strPos); 
        var back = (txtarea.value).substring(strPos,txtarea.value.length); 
        txtarea.value=front+text+back; strPos = strPos + text.length; 
        if (br == "ie") { 
            txtarea.focus(); 
            var range = document.selection.createRange(); 
            range.moveStart ('character', -txtarea.value.length); 
            range.moveStart ('character', strPos); 
            range.moveEnd ('character', 0); range.select(); 
        } 
        else if (br == "ff") {
            txtarea.selectionStart = strPos; 
            txtarea.selectionEnd = strPos; 
            txtarea.focus(); 
        } 

        txtarea.scrollTop = scrollPos;
    }
}

【问题讨论】:

  • 我不知道所有 js 代码应该做什么,但我知道 Date.now() 是一个返回当前日期和时间的 javascript 函数。然后,您可以使用 getHours()getMinutes() 函数并根据需要显示结果。
  • 时间真的需要与您的服务器时间相匹配,还是您对使用来自用户计算机的时间感到满意(在大多数情况下这是正确的)?如果您对此感到满意,您需要将格式化的日期字符串发送到您的 JavaScript 函数,格式示例可以在这里找到:stackoverflow.com/questions/5416920/… 如果您真的想使用您的服务器时间,您需要创建一个服务器端脚本并拉入使用 Ajax 请求的时间。
  • @MaartenVeerman - 使用来自用户计算机的时间是可以的,只要时间是当前的。就像我在帖子中提到的那样,我现在的操作方式仅在上次页面加载时是最新的。

标签: javascript


【解决方案1】:

使用用户系统时间,您可以使用 JavaScript Date 函数访问当前时间和日期。

例如,您可以将代码更改为:

<input class="timerStart" id="startButton2" type="button" value="Insert Start Time" onclick="insertAtCaret('messageBody','---Start Time: ' + (new Date()).toUTCString() + ' ---');" />

这不会产生与您之前完全相同的日期/时间格式,但它可以让您开始进一步研究该主题。要真正处理日期,还请查看 momentjs 库:https://momentjs.com/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多