代码如下:
<html>
<head>
<style>
#t
{ font-size:50px;
width:800px;
color:#223366;
height:280px;
border:3px solid blue;
text-align:center;
margin:10px auto;
padding-top:20px;
text-shadow: 5px 5px 5px #333333;
}
</style>
</head>
<body>
<!--div要放在js前面,否则会找不到目标id-->
<div id="t"></div>
<button type="button" id="start" onclick="start()">开始计时</button>
<button type="button" id="pause" onclick="pause()">暂停</button>
<button type="button" id="clear" onclick="stop()">清空</button>
<script>
var ms=00;
var s=00;
var m=00;
var h=00;
var t=document.getElementById("t");
function clock()
{ms+=10
if(ms>=1000)
{s+=1;
ms-=1000;
}
if(s>=60)
{m+=1;
s-=60;
}
if (m>=60)
{h+=1;
m-=60;
}
ms_=""+ms;
s_=s;
m_=m;
h_=h;
if(s_<10)
{s_="0"+s_;}
if(m_<10)
{m_="0"+m_;}
if(h_<10)
{h_="0"+h_;}
text=h_+":"+m_+":"+s_+" :"+ms_[0]+ms_[1]+"<br>";
t.innerHTML=text;
}
function start()
{setInterval("clock()",10);}
function pause()
{clearInterval("clock()");
var time=document.createElement("span");
time.innerHTML=t.innerHTML+"<br>";
var object=t.appendChild(time);
}
function stop()
{clearInterval("clock()");
var stop=document.getElementsByTagName("span");
for(var i=0;i<stop.length;i++){
var object=t.removeChild(stop[i]);}
ms=00;
s=00;
m=00;
h=00;
text=h +":"+m+":"+s+" :"+ms_[0]+ms_[1]+"<br>";
t.innerHTML=text;}
</script>
</body>
</html>
start()和clock()没问题,应该就是pause()中的clearInterval()没执行,但是不知道为什么orz
感谢!
开始定时器和清除定时器都错了
//开始定时器
var inter = null;
inter=setInterval("clock()",1000);
//清除定时器
clearInterval(inter);
要定义一个全局变量;
var timer1; //放在函数外面,更改下面2行代码。
timer1 = setInterval("clock()",10);
clearInterval(timer1 );
<script>
var ms=00;
var s=00;
var m=00;
var h=00;
var t=document.getElementById("t");
function clock()
{ms+=10
if(ms>=1000)
{s+=1;
ms-=1000;
}
if(s>=60)
{m+=1;
s-=60;
}
if (m>=60)
{h+=1;
m-=60;
}
ms_=""+ms;
s_=s;
m_=m;
h_=h;
if(s_<10)
{s_="0"+s_;}
if(m_<10)
{m_="0"+m_;}
if(h_<10)
{h_="0"+h_;}
text=h_+":"+m_+":"+s_+" :"+ms_[0]+ms_[1]+"<br>";
t.innerHTML=text;
}
var inter=null;
function start()
{inter=setInterval("clock()",10);}
function pause()
{clearInterval(inter);
var time=document.createElement("span");
time.innerHTML=t.innerHTML+"<br>";
var object=t.appendChild(time);
}
function stop()
{clearInterval(inter);
var stop=document.getElementsByTagName("span");
for(var i=0;i<stop.length;i++){
var object=t.removeChild(stop[i]);}
ms=00;
s=00;
m=00;
h=00;
text=h +":"+m+":"+s+" :"+ms_[0]+ms_[1]+"<br>";
t.innerHTML=text;}
</script>
帮你改好了,把Script标签的内容替换一下即可
通过题主的代码分析看出,题主主要对定时器开启和取消的语法没掌握
下面给题主说下定时器用法
开启定时器
function f() {
// 逻辑
}
var timer = setInterval(f,时间);
为了将来取消该定时器,一定要用变量接受一下,并且这个变量的声明放函数外,这样其他函数内就可以使用
关闭定时器
clearInterval(timer),里面写上面的变量
计时器的容器要和记录的分开,因为你计时器容器和记录使用同一个容器了,启动计时器是设置容器的内容后清空了之前的记录值,下面的可以了
还有计时器代码会出现undefined内容跳动的问题,一起修正了。其实开始结束使用一个按钮就行了
帮助到你可以点击采纳支持下哦,谢谢~~
<html>
<head>
<style>
#t {
font-size: 50px;
width: 800px;
color: #223366;
height: 280px;
border: 3px solid blue;
text-align: center;
margin: 10px auto;
padding-top: 20px;
text-shadow: 5px 5px 5px #333333;
}
</style>
</head>
<body>
<!--div要放在js前面,否则会找不到目标id-->
<div id="t">
<div id="tick"></div>
</div>
<div style="text-align:center">
<button type="button" id="start" onclick="start(this)">开始计时</button>
<!--<button type="button" id="pause" onclick="pause()">暂停</button>-->
<button type="button" id="clear" onclick="stop()">清空</button>
</div>
<script>
var ms = 00;
var s = 00;
var m = 00;
var h = 00;
var t = document.getElementById("t");
var tick = document.getElementById('tick')
function clock() {
ms += 10
if (ms >= 1000) {
s += 1;
ms -= 1000;
}
if (s >= 60) {
m += 1;
s -= 60;
}
if (m >= 60) {
h += 1;
m -= 60;
}
ms_ = "" + ms;
if (ms_.length < 2) ms_ += '0';//有可能出现1位数字的情况,下面的代码取值会出现undefined导致跳动
s_ = s;
m_ = m;
h_ = h;
if (s_ < 10) { s_ = "0" + s_; }
if (m_ < 10) { m_ = "0" + m_; }
if (h_ < 10) { h_ = "0" + h_; }
text = h_ + ":" + m_ + ":" + s_ + " :" + ms_[0] + ms_[1];
tick.innerHTML = text;
}
var timer
function start(el) {
clearInterval(timer);
if (el.innerHTML == '开始计时') {
timer = setInterval("clock()", 10);
el.innerHTML='暂停'
return;
}
el.innerHTML = '开始计时';
var time = document.createElement("span");
time.innerHTML = tick.innerHTML + "<br>";
t.appendChild(time);
}
function stop() {
clearInterval(timer);
var stop = document.getElementsByTagName("span");
for (var i = 0; i < stop.length; i++) {
var object = t.removeChild(stop[i]);
}
ms = 00;
s = 00;
m = 00;
h = 00;
text = h + ":" + m + ":" + s + " :" +0 ;
t.innerHTML = text;
}
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>秒表</title>
<style>
#bor {
width: 200px;
height: 300px;
margin: auto;
margin-top: 100px;
border: black solid 1px;
background-color: cornflowerblue;
}
#show {
width: 100px;
line-height: 40px;
margin: 40px auto;
/*background-color: blueviolet;*/
text-align: center;
font-size: larger;
}
#start,#reset,#stop{
width: 100px;
height: 30px;
margin: 10px;
color: white;
border-color: wheat;
background-color: black;
}
#btnWarp {
text-align: center;
}
</style>
</head>
<body>
<div id="bor">
<div id="show">
00:00:00
</div>
<div id="btnWarp">
<button id="start">开始</button>
<button id="stop">暂停</button>
<button id="reset">复位</button>
</div>
</div>
<script>
function $(something) {
return document.querySelector(something);
}
let i = 0;
let isCounting = false;
let time = $('#show');
let intervalID = undefined;
let double = function (m) {
return m < 10 ? `0${m}` : `${m}`;
}
let show = function (t, sh) {
t.innerHTML = sh + '';
}
let showTime = function (n) {
const hour = parseInt(n / 360);
const min = parseInt(n / 60) % 60;
const sec = n % 60;
return `${double(hour)}:${double(min)}:${double(sec)}`;
}
$('#start').onclick = function () {
if (isCounting) {
return
}
isCounting = true;
intervalID = setInterval(function () {
i++;
show(time, showTime(i));
}, 1000);
}
$('#stop').onclick = function () {
isCounting = false;
clearInterval(intervalID);
}
$('#reset').onclick = function () {
isCounting = false;
clearInterval(intervalID);
i = 0;
show(time, showTime(i));
}
</script>
</body>
</html>
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632