JavaScript中的定时器及内置对象

一.js定时器

1.js 定时器有以下两个方法:

  • setInterval() 循环定时器:按照指定的周期(以毫秒计)来调用函数或计算表达式。即固定时间间隔执行一次,像闹钟 一样,不关闭则会继续执行。该方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。
  • setTimeout() 炸弹定时器:在指定的毫秒数后调用函数或计算表达式。只执行一次,不会重复执行

2.语法格式:setInterval(code,millisec,lang)   

code----表示调用的函数名称(必须具备)      millisec------表示执行时间(必须具备)       lang-----JScript | VBScript | JavaScript(可省略),

案例1:循环定时器实现倒计时

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			var mytimer;
			function startTimer(){
				//var mytimer=setInterval(myDate(),1000);  //错误 信息:在每次点击按钮时才会调用
				//解决方式:
				mytimer=setInterval('myDate()',1000); 
				//mytimer=setInterval(function(){myDate()},1000);
//				alert(mytimer);
			}
			//创建一个函数用来获取本地的时间
			function myDate(){
				//获取当前时间
				var timeDate=new Date();
				//将日期时间 转为字符串
				var times=timeDate.toLocaleTimeString();
				//alert(times);
//				var dem01= document.getElementById('demo');
				document.getElementById('demo').innerHTML=times;
//				alert(dem01);
			}
			//myDate();
			function stopTimer(){
				//清除计时器
				clearInterval(mytimer);
			}
		</script>
	</head>
	<body>
		<h4 id="demo">setInterval()计时器函数</h4>
		<input type="button" onclick="startTimer()" value="开始"/>
		<input type="button" onclick="stopTimer()" value="停止" />
	</body>
</html>

实现简易抽奖活动效果

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			var alldata="a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z";
			var arr=alldata.split(',');
			var num=arr.length-1;
			var timer;
			function start(){
				timer=setInterval('change()',50);
			}
			function change(){
				document.getElementById('oknum').innerHTML=arr[value(0,num)]
			}
			function value(){
				return parseInt(Math.random()*num);  //返回随机产生的索引
			}
			//停止函数
			function stop(){
				clearInterval(timer);
				document.getElementById('showresult').value=document.getElementById('oknum').innerHTML;
			}
		</script>
	</head>
	<body>
		<div id="oknum" name="oknum" >请单击开始抽奖</div>
	    <button onclick="start()" accesskey="s">开始</button>
	    <button onclick="stop()" accesskey="o">停止</button> 
	    您的选择是: 
	    <input type="text" id="showresult" value=""/>
	</body>
</html>

实现打印机效果 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			var n=0;
			function load(){
				var arr=['曾','经','小','小','少','年','现','如','今','风','度','翩','翩'];
				var div=document.getElementById('div1');
				div.innerHTML+=arr[n];
				n++;
				var timer=setTimeout('load()',500);
				if(n>=arr.length){
					clearTimeout(timer);
					var timer1=setInterval('span()',500);
				}
			}
			function span(){
				var span1=document.getElementById('span1');
				if(span1.style.display=='block'){
					span1.style.display='none';
			}else{
				span1.style.display='block';
			}
		}
		</script>
	</head>
	<body>
		<body onload='load();'>
		  <div id="div1" style="float: left; font-family: 阿美简体;"></div>
        	<span id="span1">
        		<label style="color: red; font-size: 15px; font-family: 阿美简体;">|		</label>
        	</span>
	</body>
</html>

 

 

案例2  炸弹定时器实现简易版时钟

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
				function myTime(){
					var DateDay=new Date();
					var hours=DateDay.getHours(); //获取时间的小时
					var minutes=DateDay.getMinutes();//获取时间的分钟
					var second=DateDay.getSeconds(); //获取时间的秒数
					minutes=checkeds(minutes);
					second=checkeds(second);
					document.getElementById('div1').innerHTML='当前时间为:'+hours+'时'+minutes+'分'+second+'秒';
//					setTimeout(myTime,1000);
					setTimeout('myTime()',1000);
				}
//				setTimeout(myTime(),1000); //只调用一次,并没有实现时钟效果
				
				function checkeds(value){
					if(value<10){
						value='0'+value;
					}
					return value;
				}
			
		</script>
	</head>
	<body onload="myTime();">
		<div id="div1"></div>
	</body>
</html>

二.JS内置对象

 JavaScript常见的内置对象有Object,Math,String,Array,Number,Function,Boolean,JSON等,其中Object是所有对象的基类

Eval() : 用于计算字符串表达式的值; IsNaN() : 用户验证参数是否是 NaN(非数字);

案例1.

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script type="text/javascript">
			//eval():js的内置函数用来计算表达式的值
//			var a=120,b=80;
//          var sum=eval(a+b);
          alert(sum);
//          var mess=prompt('请输入一个表达式','1122*1314');
//          var value=eval(mess);
//          alert(value);
            //isNaN():判断是一个非数字的值  true/false
            var mess1=prompt('请输入一个数字','0');
            if(isNaN(mess1)==false){
            	alert('这是一个非数字的值');
            }
		</script>
	</head>
	<body>
	</body>
</html>

(1)Math 对象

abs(y) 返回 y 的绝对值

min (x,y) 返回 x 和 y 两个数中较小的数

max (x, y)返回 x 和 y 两个数中较大的数

random 返回 0-1 的随机数

round (y) 四舍五入取整

sqrt (y) 返回 y 的平方根

案例:注意:因为math.round获取随机数获取的是数字,命名图片名称尽量使用数字开头,这样才能保证图片路径的正确性,以便获取到图片

以下案例图片没有以数字开头(而是以p1.jpg命名),所以路径名也应加上p   (document.getElementById('images').src='../img/p'+mathvalue+'.jpg';),否则会出现路径错误问题

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			//Math.random(): 随机产生0-1之间的数字
			//Math.round(): 四舍五入取整
			//案例:使用计时器以及Math对象实现页面2秒显示不同的图片
			function suiji(){
				var mathvalue=Math.round(Math.random()*3+1);
//				document.write(mathvalue);
				document.getElementById('images').src='../img/p'+mathvalue+'.jpg';
			}
			setInterval('suiji()',2000);
		</script>
	</head>
	<body>
		<img src="../img/p1.jpg" id="images" width="400px",height="200px">
	</body>
</html>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			//问题: 使用计时器以及Math对象实现页面2秒 显示不同的图片
			function suiji(){
				var mathValue=Math.round(Math.random()*3+1);
//				document.write(mathValue+'<br />');
				document.getElementById('img1').src='img/'+mathValue+'.jpg';
			}
			setInterval('suiji()',2000);
		</script>
	</head>
	<body>
		<img src="img/3.jpg" id="img1" width="200px"height="200px"/>
	</body>
</html>

 

(2)Date 对象

Date 对象存储的日期为自 1970 年 1 月 1 日 00:00:00 以来的毫 秒数 var 日期对象 = new Date (年、月、日等参数)

例: var mydate=new Date( “July 29, 1998,10:30:00 ”)

如果没有参数,表示当前日期和时间例: var today = new Date();

1)Date 方法的分组:

2)用作 Date 方法的参数的整数:

 

3)Get 方法:

案例:实现距离元旦倒计时 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
function time(){
    //目标时间
    var targetDate=new Date("2019/1/1")
    //获取当前时间
    var now = new Date()
    //目标时间和当前时间相差的毫秒
    var millon =targetDate.getTime() - now.getTime()
    var seconds =millon/1000
    //一天的毫秒数=24*60*60*1000
    var days = parseInt(seconds/(24*60*60))
    //剩余的小时=(millon - days *24*60*60*1000)/(60*60*1000)
    var hours =parseInt(seconds%(24*60*60)/3600)
    var minutes = parseInt(seconds%3600/60)
    var ss =parseInt(seconds%60)
    var pobj =document.getElementById("pobj")
    pobj.innerHTML="离2019年元旦还剩"+days+"天"+hours+"小时"+minutes+"分钟"+ss+"秒"
}
    setInterval("time()",1000)
</script>
	</head>
	<body>
	<div id="pobj"></div>
	</body>
</html>

(3)Window 对象

open(”打开窗口的 url”,”窗口名”,”窗口特征”) 窗口的特征如下,可以任意组合:

height: 窗口高度; width: 窗口宽度; top: 窗口距离屏幕上方的象素值; left:窗口距离屏幕左侧的像素值

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			var left1=0;
			var top1=0;
			function adv(){
			
				left1+=50;
				top1+=50;
				var div=document.getElementById('Layer1');
				div.style.left=left1+'px';
				div.style.top=top1+'px';
			}
			setInterval('adv()',500);
		</script>
	</head>
	<body onload="adv()">
		<div id="Layer1" style="position:absolute; left:14px; top:44px; width:150px; height:102px; z-index:1">
	    <a href="http://www.mycom.cn"><img src="../img/p2.jpg" width="200" height="150" border="0"></a>
	    </div>
	</body>
</html>

 

(4)Document 对象

属性:

bgColor: 设置或检索 Document 对象的背景色

body :指定文档正文的开始和结束

location :包含关于当前 URL 的信息

title: 包含文档的标题 url 设置或检索当前文档的 URL

方法:

clear ( ): 清除当前文档

close ( ): 关闭输出流并强制显示发送的数据

write ("text") :将文本写入文档

案例:
 

<html>
<head>
	<script type="text/javascript">
		function createNewDoc()
		  {
			  var newDoc=document.open("new_file.html","replace");
			  var txt="<html><body>Learning about the DOM is FUN!</body></html>";
			  newDoc.write(txt);
			  newDoc.close();
		  }
	</script>
</head>
<body>
		<input type="button" value="Write to a new document"
		onclick="createNewDoc()">
</body>
</html>

(5)History 对象

方法:

 back():加载 History 列表中的上一个 URL。

forward() :加载 History 列表中的下一个 URL。

 go("url" or number): 加载 History 列表中的一个 URL,或要求浏览器移动指定的页面数。

注:back ( ) 方法相当于后退按钮 forward ( ) 方法相当于前进按钮 go (1)代表前进 1 页,等价于 forward( )方法; go(-1) 代表后退 1 页,等价于 back( )方法;

(6)Loaction 对象

属性:

host: 设置或检索位置或 URL 的主机名和端口号

hostname: 设置检索位置或 URL 的主机名部分

href :设置或检索完整的 URL 字符串

方法:

assign("url"):加载 URL 指定的新的 HTML 文档。

reload():重新加载当前页

replace("url") :通过加载 URL 指定的文档来替换当前文档

案例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script type="text/javascript">
			//alert(location.host);//获取或是设置主机的端口号和主机名称  127.0.0.1:8020
			//alert(location.hostname);
			//alert(location.href); //设置或是检索url信息
			
			//location.assign('http://www.yltedu.com');  //加载一个新的url地址
			//location.reload(true);  //重新加载当前页面
			//location.replace('new_file.html');  //使用一个新的url替换当前的url
			
			function change_01(){
				
				//获取选中的节点的value值  赋值给location对象的属性href
				location.href=document.for1.select1.value;
				
			}
		</script>
	</head>
	<body>
		
		<form action="" method="post" name="for1">
			<select name="select1" onchange="change_01();">
				<option>--请选择季节--</option>
				<option value="spring.html">春季</option>
				<option value="spring.html">夏季</option>
				<option value="spring.html">秋季</option>
				<option value="spring.html">冬季</option>
			</select>
			<input type="submit" value="提交"/>
		</form>
	</body>
</html>


另外创建一个的跳转页面

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<h1>跳转到春季的页面了.......</h1>
		<!--实现返回前一个页面   javascript:hitory.go(-1)-->
		<a href="summer.html">夏季</a>
		<a href="fall.html">秋季</a>
		<a href="winter.html">冬季</a>
		<a href="javascript:history.go(-1)">前一个页面</a>
		<a href="javascript:history.go(1)">后一个页面</a>
	</body>
</html>

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值