一.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>