代码用于制作数字时钟,在showTime
函数中放入setTimeout
函数有什么作用,同时设置textcontent
和Innertext
有什么作用
function showTime(){
var date = new Date();
var h = date.getHours();// 0 - 23
var m = date.getMinutes(); // 0 - 59
var s = date.getSeconds(); // 0 - 59
var session = "AM";
if(h == 0){
h = 12;
}
if(h > 12){
h = h - 12;
session = "PM";
}
h = (h < 10) ? "0" + h : h;
m = (m < 10) ? "0" + m : m;
s = (s < 10) ? "0" + s : s;
var time = h + ":" + m + ":" + s + " " + session;
document.getElementById("MyClockDisplay").innerText = time;
document.getElementById("MyClockDisplay").textContent = time;
setTimeout(showTime, 1000);
}
showTime();
<div id="MyClockDisplay" class="clock"></div>
发布于 2018-06-05 08:45:29
您需要在showTime
的底部调用setTimeout
,以便每次调用showTime
都会将函数排入队列,以便在1秒内再次运行-在运行时,函数将在另一秒后再次排队,依此类推。使用setTimeout
递归调用函数本身是使用setInterval
的另一种选择。
textContent
通常比innerText
更可取-参见The poor, misunderstood innerText,尽管如果你只是赋值而不是获取,这并不重要。这里不适合使用innerHTML
,因为您要分配的是文本,而不是HTML标记。
使用setInterval
而不是递归setTimeout
将如下所示,实现完全相同的功能:
function showTime() {
var date = new Date();
var h = date.getHours(); // 0 - 23
var m = date.getMinutes(); // 0 - 59
var s = date.getSeconds(); // 0 - 59
var session = "AM";
if (h == 0) {
h = 12;
}
if (h > 12) {
h = h - 12;
session = "PM";
}
h = (h < 10) ? "0" + h : h;
m = (m < 10) ? "0" + m : m;
s = (s < 10) ? "0" + s : s;
var time = h + ":" + m + ":" + s + " " + session;
document.getElementById("MyClockDisplay").innerText = time;
document.getElementById("MyClockDisplay").textContent = time;
}
showTime();
setInterval(showTime, 1000);
<div id="MyClockDisplay" class="clock"></div>
https://stackoverflow.com/questions/50690499
复制相似问题