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 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题