原生JS代码计时,为什么秒数不随时间刷新?

<!DOCTYPE html>



day25-27(1)

var d = new Date(); var res = document.getElementById("result"); var t; function time() { var year = d.getFullYear(); var month = d.getMonth()+1; var day = d.getDate(); var weekday = ["星期一","星期二","星期三","星期四","星期五","星期六","星期日"]; var week = d.getUTCDay()+1; var hour = d.getHours(); var minutes = d.getMinutes(); var seconds = d.getSeconds(); minutes = checkTime(minutes); seconds = checkTime(seconds); res.innerHTML = year + "年" + month + "月" + day + "日"+ " " + weekday[week] + " " + hour + ":" + minutes + ":" + seconds; console.log(seconds); t = setTimeout(time, 1000); } function checkTime(i) { if (i<10) {i="0" + i} return i } time();


<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>sort</title>
</head>
<body>
<span id="result"></span>
</body>
<script>

var res = document.getElementById("result");

function time() {
    var d = new Date();
    var year = d.getFullYear();
    var month = d.getMonth() + 1;
    var day = d.getDate();
    var weekday =  ["星期一","星期二","星期三","星期四","星期五","星期六","星期日"]; 
    var week = d.getUTCDay() + 1;
    var hour = d.getHours();
    var minutes = d.getMinutes();
    var seconds = d.getSeconds();
    minutes = ('0' + minutes).slice(-2);
    seconds = ('0' + seconds).slice(-2);
    res.innerHTML =  year + "年" + month + "月" + day + "日"+ " " + weekday[week] + " " + hour + ":" + minutes + ":" + seconds;
    setTimeout(time, 1000); 
} 

time();

</script>
</html>

你要把var d = new Date(); 放到time这个function里面,每3000ms调用一次time的时候重新获取当时的时间才会刷新为新的时间,否则这个d赋值之后就一直是当时的秒数了。

var res = document.getElementById("result"); 
var t; 
function time() 
{ 
    var d = new Date(); 
    var year = d.getFullYear(); 
    var month = d.getMonth()+1; 
    var day = d.getDate(); 
    var weekday = ["星期一","星期二","星期三","星期四","星期五","星期六","星期日"]; 
    var week = d.getUTCDay()+1; 
    var hour = d.getHours(); 
    var minutes = d.getMinutes(); 
    var seconds = d.getSeconds(); 
    minutes = checkTime(minutes); 
    seconds = checkTime(seconds); 
    res.innerHTML = year + "年" + month + "月" + day + "日"+ " " + weekday[week] + " " + hour + ":" + minutes + ":" + seconds; 
    console.log(seconds); 
    t = setTimeout(time, 1000); 
} 
function checkTime(i) 
{ 
    if (i<10) 
    {
        i="0" + i
    } 
    return i 
} 

time();

图片说明
在time的函数中 你的定时器无论怎么执行,你的时间永远都是第一次运行的时间,你需要每次执行,都要获取一次当前时间,所以吧代码换下文职即可.