慕先生5291929
2017-08-03 07:20
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>定时器</title>
<style type="text/css">
#clock{background:red #339border:2px dashed blue }
h1{text-align:center }
h1{color:red}
.aa{color:blue}
</style>
</head>
<body>
<h1>显示时间</h1>
<script type="text/javascript">
// var attime;
function clock(){
var time=new Date();
attime=time.getHours()+":"+time.getMinutes()+":"+time.getSeconds();
document.getElementById("clock").value = attime;
}
var i=setInterval(clock,1000);
function b()
{var i=setInterval(clock,1000)}
function c()
{
var cc=clearInterval(i,1000)
}
</script>
<form>
<input type="button" id="clock" size="50" value="clock()"/>
</form>
<p class="aa">我有一所房子,面朝大海春暖花开。</p>
<p>喂马 劈柴 周游世界</p>
<input type="button" value="start" onClick="b()">
<input type="button" value="stop" onClick="c()">
</body>
</html>
var i=setInterval(clock,1000); function b() {var i=setInterval(clock,1000)} function c() { var cc=clearInterval(i,1000) } 这段里面你的返回的i你定义了两次,一个在b()外,一个在b内,这样的话,就是定义两个i,而不是共用一个,你只是stop 了b()外面的那一个,里面的那个你无法去停止,因为c()里的i不能调用b()里面的i,你可以修改代码,把b()里面的var去掉就好了
大神写的,很好用
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>计时器</title>
<script type="text/javascript">
var num=0;
var i;
function startCount(){
document.getElementById('count').value=num;
num=num+1;
i=setTimeout("startCount()",1000);
}
flag=0;
function stopCount(){
if(flag==0){
flag=1;
document.getElementById('but').value="Stop";
startCount();
}else{
clearTimeout(i);
flag=0;
document.getElementById('but').value="Start";
}
}
function ce(){
if(flag==0){
document.getElementById('count').value="清除完毕!";
num=0;
setTimeout("document.getElementById('count').value=num",1000);
}
}
</script>
</head>
<body>
<form>
<input type="text" id="count" />
<input type="button" id="but" value="Start" onclick="stopCount()" />
<input type="button" value="Clear" onclick="ce()" />
</form>
</body>
</html>
你有两个设定计时器的方法而且返回值都赋给了i第一个是一开始启动的,第二个是一直在执行的,你需要把function b里的变量定义到function b函数的上边换一个变量名,就是这样
var result; var i = setInterval(clock,1000); function b() { result = setInterval(clock,1000); } function c() { clearInterval(result,1000); }
var i=setInterval('clock()',1000);
JavaScript进阶篇
468061 学习 · 21891 问题
相似问题