设置一个定时器,要求是:同一个按钮,按第一下的时候开始计时,按第二下的时候停止计时,再按一下又开始从上一次的数字开始计时,只能用dom操作和dom操作之前的知识解决
该回答引用chatgpt:
<!DOCTYPE html>
<html>
<head>
<title>定时器示例</title>
</head>
<body>
<h1 id="timer">00:00:00</h1>
<button id="btn" onclick="timerFunc()">开始计时</button>
<script>
var timer;
var startTime, stopTime;
var time = 0;
var timerElem = document.getElementById("timer");
var btn = document.getElementById("btn");
function timerFunc() {
if (timer) {
// 如果定时器已经在运行,则停止计时器
clearInterval(timer);
timer = null;
stopTime = new Date();
btn.innerHTML = "开始计时";
} else {
if (startTime && stopTime) {
// 如果已经计时过,且暂停过,则从上次时间开始计时
var diffTime = stopTime.getTime() - startTime.getTime();
time = Math.floor(diffTime / 1000);
}
// 开始计时
startTime = new Date();
timer = setInterval(function() {
time++;
var hour = Math.floor(time / 3600);
var minute = Math.floor(time / 60) % 60;
var second = time % 60;
timerElem.innerHTML = formatNumber(hour) + ":" + formatNumber(minute) + ":" + formatNumber(second);
}, 1000);
btn.innerHTML = "停止计时";
}
}
function formatNumber(num) {
return num < 10 ? "0" + num : num;
}
</script>
</body>
</html>
document.createElement
创建元素节点
var oDiv = document.createElement("div");
console.log(oDiv);
如何把这个属性节点添加到DOM树中
<div id="box">
<span>我是haven</span>
</div>
var oBox = document.getElementById("box");
var oDiv = document.createElement("div");
oBox.appendChild(oDiv);
document.createTextNode
创建文本节点
var oText = document.createTextNode("heaven")
console.log(oText);
如何把这个文本节点添加到DOM树中
<div id="box">
<span>我是haven</span>
</div>
var oBox = document.getElementById("box");
var oText = document.createTextNode("heaven");
oBox.appendChild(oText);
document.createComment
创建注释节点
var oComment = document.createComment("我是注释节点");
console.log(oComment);
如何把这个注释节点添加到DOM树中
<div id="box">
<span>我是haven</span>
</div>
var obox = document.getElementById("box");
var oComment = document.createComment("我是注释节点");
obox.appendChild(oComment);
document.createDocumentFragment
创建文档片段节点
var fragment = document.createDocumentFragment();
console.log(fragment);