weixin_57756336 2023-03-31 20:45 采纳率: 84.6%
浏览 9
已结题

为什么const date = new Date()写在外面,计时器无法正常运行?

为什么const date = new Date()写在外面,计时器无法正常运行?感觉计时器应该正常运行才对


 <script>
        const date = new Date()
        function getMyDate() {
            let year = date.getFullYear()
            let month = date.getMonth()
            let day = date.getDay()
            let h = date.getHours()
            let m = date.getMinutes()
            let s = date.getSeconds()
            h = h < 10 ? '0' + h : h
            m = m < 10 ? '0' + m : m
            s = s < 10 ? '0' + s : s
            return `今天是${year}${month}${day}${h}:${m}:${s}`
        }
        const div = document.querySelector('div')
        div.innerHTML = getMyDate()
        setInterval(function () {
            div.innerHTML = getMyDate()
        }, 1000)
    </script>
  • 写回答

3条回答 默认 最新

  • 关注

    const date = new Date() 这行代码将会在 JavaScript 脚本第一次加载时执行,获取的是脚本加载时的时间,而后续计时器中调用的 date 变量仍然是最初获取的时间,不会自动更新。因此,每秒钟更新的仍然是最初获取的时间,导致时间显示不正确。

    为了解决这个问题,应该把 date 变量的赋值放到 getMyDate() 函数中,并在每次调用函数时重新获取当前的时间。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 4月8日
  • 已采纳回答 3月31日
  • 创建了问题 3月31日

悬赏问题

  • ¥15 帮我写一个c++工程
  • ¥30 Eclipse官网打不开,官网首页进不去,显示无法访问此页面,求解决方法
  • ¥15 关于smbclient 库的使用
  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教