首页 > 解决方案 > setInterval 没有工作

问题描述

试图显示日期,它只显示一次然后停止。

var txtTime = document.getElementById('time');
var date = new Date();

var formatDate = function(d) {
  // Friday, July 03, 2020, 6:14:12 PM
  var hour = d.getHours();
  var minute = d.getMinutes() < 10 ? '0' + d.getMinutes() : d.getMinutes();
  var seconds = d.getSeconds() < 10 ? '0' + d.getSeconds() : d.getSeconds();
  var date = d.getDate();
  var month = d.getMonth();
  var day = d.getDay();
  var year = d.getFullYear();


  return `${fDay(day)}, ${fMonth(month)} ${date++}, ${year}, ${fH(hour)[0]}:${minute++}:${seconds++} ${fH(hour)[1]}`;
}

function execDate() {
  txtTime.innerText = formatDate(date);
}

setInterval(function() {
  execDate();
}, 1000);
<h1 id="time">Waiting...</h1>

标签: javascript

解决方案


您已经创建了一个date始终保持相同值的变量。您每次都需要传递更新的新日期。

function execDate() {
    txtTime.innerText = formatDate(new Date());
}

或者date在函数内部定义变量

function execDate() {
    var date = new Date();
    txtTime.innerText = formatDate(date);
}

推荐阅读