<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script language="JavaScript"> function ShowTimes(){ var endtime=new Date("2016/11/12,17:20:00"); var nowtime = new Date(); LeaveTime=endtime-nowtime; LeaveDays=Math.floor(LeaveTime/(1000*60*60*24));//天 LeaveHours=Math.floor(LeaveTime/(1000*60*60)%24);//时 LeaveMinutes=Math.floor(LeaveTime/(1000*60)%60);//分 LeaveSeconds=Math.floor(LeaveTime/1000%60);//秒 var c=new Date(); var q=c.getMilliseconds(); if(q<10)//因为毫秒为一位数时只占一个字符位置,会让毫秒二字变动位置 { q="00"+c.getMilliseconds(); } if(q>=10 && q<100)//因为毫秒为两位数时只占两个字符位置,会让毫秒二字变动位置 { q="0"+c.getMilliseconds(); } if(LeaveTime<0){ hxtime.innerHTML="抢购已结束"; clearInterval(s);//结束循环 }else{ hxtime.innerHTML="距离相见的日子还有<font color=red>"+LeaveDays+"</font>天<font color=red>"+LeaveHours+"</font>时<font color=red>"+LeaveMinutes+"</font>分<font color=red>"+LeaveSeconds+"</font>秒<font color=red>"+q+"</font>毫秒"; } } var s =setInterval(ShowTimes,5); //循环执行 ShowTimes函数每隔5ms </script> </HEAD> <BODY> <div id="hxtime" style="padding:5px 0 0 0;"></div> </BODY> </HTML>
因为setTimeout(表达式,延时时间)在执行时,是在载入后延迟指定时间后,去执行一次表达式,记住,次数是一次
而setInterval(表达式,交互时间)则不一样,它从载入后,每隔指定的时间就执行一次表达式
所以,完全是不一样的
很多人习惯于将setTimeout包含于被执行函数中,然后在函数外再次使用setTimeout来达到定时执行的目的 这样,函数外的setTimeout在执行函数时再次触发setTimeout从而形成周而复始的定时效果
使用的时候各有各的优势,使用setInterval,需要手动的停止tick触发。而使用方法中嵌套setTimeout,可以根据方法内部本身的逻辑不再调用setTimeout就等于停止了触发。
setTimeout只运行一次,也就是说设定的时间到后就触发运行指定代码,运行完后即结束。如果运行的代码中再次运行同样的setTimeout命令,则可循环运行。
setinterval是循环运行的,即每到设定时间间隔就触发指定代码。这是真正的定时器。
setinterval使用简单,而setTimeout则比较灵活,可以随时退出循环,而且可以设置为按不固定的时间间隔来运行,比如第一次1秒,第二次2秒,第三次3秒……
参考文章:
http://heisetoufa.iteye.com/blog/269566
http://www.cnblogs.com/mbtq/archive/2012/10/25/2740023.html
http://blog.sina.com.cn/s/blog_921bd9650101db4b.html
时间: 2024-10-19 10:18:49