JS setTimeout相关问题

本文探讨了一个JavaScript实现的计时器,包括开始、暂停功能。页面中包含一个显示当前时间的div,通过点击开始按钮启动计时,点击暂停按钮停止更新时间。遇到window.onload时,如果直接使用会引发错误,因为setTimeout需要在页面加载时立即执行。解决方案是移除window.onload或调整代码结构。此外,还讨论了window.onload函数导致弹窗重复显示的问题。
摘要由CSDN通过智能技术生成

下面是一个计时器,两个按钮,点击'开始'时间开始走动,点击'暂停'时间停止

​
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>计时器</title>
		<style type="text/css">
			div{
				width: 600px;
				height: 100px;
				font-size: 40px;
				color: #FF0000;
				margin: 0 auto;
				background-color: #00FFFF;
			}
		</style>
		<script type="text/javascript">
		
			// window.onload=function (){/* 为什么加这个就报错??? */
	/* 我的理解:window.donload是页面加载完以后再执行,而遇到setInterval和setTimeout时不允许页面加载完再执行,如本例,a()函数是页面执行完以后执行,而setTimeout却是遇到就执行,所以遇到setTimeout时报错函数未定义 
	解决方案:1:去掉window.onload。2:参考countdown文件*/
				function a(){
					// alert(1);
					var myDate= new Date();
					var t='现在是:'+'<br/>'+myDate.getFullYear()+"年";
					t+=(myDate.getMonth()>9?myDate.getMonth():'0'+myDate.getMonth())+'月';
					t+=(myDate.getDate()>9?myDate.getDate():'0'+myDate.getDate())+"日"+"&nbsp;&nbsp;";
					t+=(myDate.getHours()>9?myDate.getHours():'0'+myDate.getHours())+"时";//获取时
					t+=(myDate.getMinutes()>9?myDate.getMinutes():'0'+myDate.getMinutes())+"分";//获取分
					t+=(myDate.getSeconds()>9?myDate.getSeconds():'0'+myDate.getSeconds())+"秒";//获取秒
					/* t+=myDate.getMilliseconds()+'毫秒'; */
					document.getElementById("mytime").innerHTML =  t;
					tim=setTimeout("a()",1000);
//tim必须在这里写,找了好久,一开始写在下面怎么也动不起来,写在这里才会动起来.
				}
				// setTimeout("a()",1000);
				var tim;/* 注意: 要使用 clearTimeout() 方法, 在创建执行定时操作时要使用全局变量: */
				function s(){
					setTimeout("a()",1000);
				}
				function e(){
					clearTimeout(tim);
				}
				// setInterval("a()",1000);
				// a();
			// }
		</script>
	</head>
	<body>
		<div id='mytime'></div>
		<button type="button" onclick="s()">开始</button>
		<button type="button" onclick="e()">暂停</button>
	</body>
</html>

​

还有一个问题困扰我好久,就是写上window.onload会报错,

另外我试验了好多次,对下面这段代码始终不理解

<script type="text/javascript">
		
			window.onload=function () {
				window.alert("加载完成");
			}
			
</script>

它为什么会把提示框弹出至少两次?求各路神仙指点迷津.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值