JavaScript
JavaScript中日期的比较
七 13th
在JavaScript中比较两个Date日期对象的大小时,可以直接使用运行符进行。
具体描述如下:
- <script>
- var strdt1="2007-5-12 0:00";
- var strdt2="2007-5-10 0:00";
- strdt1 = strdt1.replace(/-/g, "/");
- strdt2 = strdt2.replace(/-/g, "/");
- var dt1=new Date(Date.parse(strdt1));
- var dt2=new Date(Date.parse(strdt2));
- alert(dt1>dt2);
- </script>
运行的结果为:TRUE
与本机当前日期比较的代码:
- <script>
- var strdt2="2007-5-12 0:00";
- strdt2 = strdt2.replace(/-/g, "/");
- var dt1=new Date(); //Mon Jul 13 2009 21:32:52 GMT+0800
- var dt2=new Date(Date.parse(strdt2));
- alert(dt1>dt2);
- </script>
运行的结果为:TRUE
记录,备忘。
本来的目的是记录在使用过程中出现奇怪的结果,但是在刚才的测试中日期比较的结果都正常。
呵呵,或许是之前的代码有误吧。
JavaScript压缩工具ESC.wsf
六 19th
ESC(ECMAScript cruncher)这个工具只能在Windows下使用,ESC.wsf提供5种压缩级别,从0到4:
Level 0 :: No compression 不对JS文件进行压缩
Level 1 :: Comment removal 移除JS文件中的注释
Level 2 :: Whitespace removal 移除JS文件中的注释及空行(一般选择此级别就足够了)
Level 3 :: Newline removal 移除JS文件中的注释,将所有代码合并为一行
Level 4 :: Variable substitution 提供最新的压缩率,移除JS文件中的注释,将所有代码合并为一行,并且修改JS文件中的变量名
在WINDOWS命令行下执行
cscript ESC.wsf -ow 压缩后文件.js Common.js 将"Common.js"按照压缩级别2来压缩(ESC.wsf默认压缩级别为2)为"压缩后文件.js"
cscript ESC.wsf -l 3 -ow 压缩后文件.js Common.js 将"Common.js"按照压缩级别3来压缩为"压缩后文件.js"
需要注意的是,ESC.wsf压缩级别4会把变量名修改,如果你的js中用到了全局变量或者类的话,就不能使用该压缩级别了,否则其它使用你的js的文件可能会无法正常运行。
ESC.wsf 使用方便简介:
- X:\cscript ESC.wsf -ow crunched.js original1.js original2.js original3.js Crunch ‘original1.js’,'original2.js’ and ‘original3.js’ at level 2 (default) and save the output as ‘crunched.js’. Any previous file named ‘crunched.js’ will be overwritten.
- X:\cscript ESC.wsf -l 1 -oa crunched.js C:\script-directory Grab all scriptfiles (.js) in directory ‘C:\script-directory’, crunch them at level 1 (comment and empty line removal only) and append the result to ‘crunched.js’. If ‘crunched.js’ doesn’t exist, it will be created.
- X:\cscript ESC.wsf -l 0 -$ -ow STDOUT original1.js original2.js Subject ‘original1.js’ and ‘original2.js’ for variable substitution, but perform no comment or whitespace removal. Redirect output to STDOUT instead of writing to file.
- X:\cscript ESC.wsf -l 4 -ow crunched.js original.js Crunch ‘original.js’ using variable substitution and remove any occurance of whitespace (where permitted…) and save it as ‘crunched.js’ (equals -l 3 -$)
- X:\cscript ESC.wsf -l 4 -ow crunched.js original.js > verbose.txt Crunch ‘original.js’ at level 4 and save the verbose output to verbose.txt
附件:esc.zip(55200 Byte)
自动关闭IE6或IE7窗口时不出现提示
六 6th
在IE7中使用window.close();自动关闭窗口时会出现确认关闭的提示.
以下代码可以防止出现这样的提示:
- <script language="javascript">
- openLogin();
- function randomNumber(limit){
- return Math.floor(Math.random()*limit);
- }
- function openLogin() {
- var loginWidth=718;
- var loginHeight=540;
- x=(screen.width-loginWidth)/2;
- y=(screen.height-loginHeight)/2;
- window.resizeTo(loginWidth,loginHeight+20);
- window.moveTo(x,y);
- var myWin = window.open("http://www.google.com","contactWeb"+randomNumber(10000),"toolbar=0,location=0,status=0,menubar=0,scrollbars=auto,resizable=no,width="+loginWidth+",height="+loginHeight+",left="+x+",top="+y);
- window.opener = null; // 关闭IE6、IE7窗口不再提示
- window.open(”,‘_top’); // 关闭IE7窗口不再提示
- window.close();
- }
- </script>
以下是在IE6中有效的代码:
- function DestroySelf()
- {
- var oMe = window.self;
- oMe.opener = window.self;
- oMe.close();
- }
- function LoginSucc(pc)
- {
- window.open("/portal/Portal.aspx?PassCode="+pc+"","BE_MAIN", "height=" + (window.screen.availHeight - 60) + ", width=" + (window.screen.availWidth - 14) + ", top=0, left=0, menubar=0, location=0, resizable=1, status=1");
- setTimeout("DestroySelf()",100);
- }
从阿里妈妈学习到的表单验证函数
二 29th
学习到的函数实现如下功能:检查当前浏览器是否为Netscape,保存当前Form表单(仅适用于IE浏览器),校验数据的合法性,判断是否为闰年,弹出窗口,校验日期的合法性等。
具体代码如下:
函数的具体功能在文件的注释中有详细介绍。
- //——–
- // 检查当前浏览器是否为Netscape
- //——–
- function isNetscape(){
- app=navigator.appName.substring(0,1);
- if (app==‘N’) return true;
- else {return false;}
- }
- //——–
- // 保存当前Form表单(仅适用于IE浏览器)
- //——–
- function formSaveCheck(fileName){
- if(isNetscape()){alert("Sorry, these function is not supported")}
- else document.execCommand(‘SaveAs’,null,fileName)
- }
- //——–
- // 校验数据的合法性
- //——–
- function isValidReg( chars){
- var re=/<|>|\[|\]|\{|\}|『|』|※|○|●|◎|§|△|▲|☆|★|◇|◆|□|▼|㊣|﹋|⊕|⊙|〒|ㄅ|ㄆ|
- ㄇ|ㄈ|ㄉ|ㄊ|ㄋ|ㄌ|ㄍ|ㄎ|ㄏ|ㄐ|ㄑ|ㄒ|ㄓ|ㄔ|ㄕ|ㄖ|ㄗ|ㄘ|ㄙ|ㄚ|ㄛ|ㄜ|ㄝ|ㄞ|ㄟ|ㄢ|ㄣ|ㄤ|ㄥ|ㄦ|ㄧ|ㄨ|ㄩ
- |■|▄|▆|\*|@|#|\^|\\/;
- if (re.test( chars) == true) {
- return false;
- }else{
- return true;
- }
- }
- //——–
- // 检查数据的长度是否合法
- //——–
- function isValidLength(chars, len) {
- if (chars.length > len) {
- return false;
- }
- return true;
- }
- //——–
- // 校验URL的合法性
- //——–
- function isValidURL( chars ) {
- //var re=/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)((((\w+(-*\w*)+)\.)+((com)|
- (net)|(edu)|(gov)|(org)|(biz)|(aero)|(coop)|(info)|(name)|(pro)|(museum))(\.([a-z]{2}))?)|((\w+(-
- *\w*)+)\.(cn)))$/;
- var re=/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(\S+\.\S+)$/;
- //var re=/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(((((\w+(-*\w*)+)\.)+((com)|
- (net)|(edu)|(gov)|(org)|(biz)|(aero)|(coop)|(info)|(name)|(pro)|(museum)|(cn)|(tv)|(hk))(\.([a-z]
- {2}))?)|((\w+(-*\w*)+)\.(cn)))((\/|\?)\S*)*)$/;
- if (!isNULL(chars)) {
- chars = jsTrim(chars);
- if (chars.match(re) == null)
- return false;
- else
- return true;
- }
- return false;
- }
- //——–
- // 校验数字的合法性
- //——–
- function isValidDecimal( chars ) {
- var re=/^\d*\.?\d{1,2}$/;
- if (chars.match(re) == null)
- return false;
- else
- return true;
- }
- //——–
- // 校验数字的合法性
- //——–
- function isNumber( chars ) {
- var re=/^\d*$/;
- if (chars.match(re) == null)
- return false;
- else
- return true;
- }
- //——–
- // 校验邮编的合法性
- //——–
- function isValidPost( chars ) {
- var re=/^\d{6}$/;
- if (chars.match(re) == null)
- return false;
- else
- return true;
- }
- //——–
- // 去掉数据的首尾空字符
- //——–
- function jsTrim(value){
- return value.replace(/(^\s*)|(\s*$)/g,"");
- }
- //——–
- // 校验数据是否为空(当数据为空字符时也为NULL)
- //——–
- function isNULL( chars ) {
- if (chars == null)
- return true;
- if (jsTrim(chars).length==0)
- return true;
- return false;
- }
- //——–
- // 校验Email的合法性
- //——–
- function checkEmail (fieldName, bMsg)
- {
- var emailStr = fieldName.value;
- var emailPat=/^(.+)@(.+)$/
- var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
- var validChars="\[^\\s" + specialChars + "\]"
- var quotedUser="(\"[^\"]*\")"
- var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
- var atom=validChars + ‘+’
- var word="(" + atom + "|" + quotedUser + ")"
- var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
- var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
- var matchArray=emailStr.match(emailPat)
- if (matchArray==null)
- {
- if (bMsg) alert("Email address seems incorrect (check @ and .’s)")
- return false
- }
- var user=matchArray[1]
- var domain=matchArray[2]
- // See if "user" is valid
- if (user.match(userPat)==null)
- {
- if (bMsg) alert("The Email address seems incorrect.")
- // fieldName.focus();
- return false
- }
- /* if the e-mail address is at an IP address (as opposed to a symbolic
- host name) make sure the IP address is valid. */
- var IPArray=domain.match(ipDomainPat)
- if (IPArray!=null)
- {
- for (var i=1;i<=4;i++)
- {
- if (IPArray[i]>255)
- {
- if (bMsg) alert("Destination IP address is invalid!")
- return false
- }
- }
- return true
- }
- // Domain is symbolic name
- var domainArray=domain.match(domainPat)
- if (domainArray==null)
- {
- if (bMsg) alert("The domain name doesn’t seem to be valid.")
- return false
- }
- /* domain name seems valid, but now make sure that it ends in a
- three-letter word (like com, edu, gov) or a two-letter word,
- representing country (uk, nl), and that there’s a hostname preceding
- the domain or country. */
- var atomPat=new RegExp(atom,"g")
- var domArr=domain.match(atomPat)
- var len=domArr.length
- if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3)
- {
- // the address must end in a two letter or three letter word.
- if (bMsg) alert("The address must end in a three-letter domain, or two letter country.")
- return false
- }
- // Make sure there’s a host name preceding the domain.
- if (len<2)
- {
- if (bMsg) alert("This address is missing a hostname!")
- return false
- }
- // If we’ve got this far, everything’s valid!
- return true;
- }
- //——–
- // 判断是否为闰年
- //——–
- function isLeapYear(year){
- if (year % 4 != 0)
- return false;
- if (year % 400 == 0)
- return true;
- if (year % 100 == 0)
- return false;
- return true;
- }
- //——–
- // 校验日期的合法性
- //——–
- function validateDate(day,month,year)
- {
- if ((day<=0)||(month<=0)||(year<=0))
- return false;
- if ((month>=1)&&(month<=12)) {
- if (month == 2) {
- if (isLeapYear(year)) {
- if (day<=29)
- return true;
- } else {
- if (day<=28)
- return true;
- else
- return false;
- }
- } else if ((month==4)||(month==6)||(month==9)||(month==11)) {
- if (day<=30)
- return true;
- else
- return false;
- } else {
- if (day<=31)
- return true;
- else
- return false;
- }
- }
- return false;
- }
- //——–
- // 判断数据是否包含都是Single Byte
- //——–
- function isSingleByteString(str)
- {
- var rc = true;
- var j = 0, i = 0;
- for (i=0; i<str.length; i++) {
- j = str.charCodeAt(i);
- if (j>=128) {
- rc = false;
- break;
- }
- }
- return rc;
- }
- var submitEvent = true;
- function checkDoubleSubmit(){
- return submitEvent;
- }
- //——–
- // 弹出窗口
- // 参数:url-弹出窗口显示URL的内容
- // w-弹出窗口的宽度
- // h-弹出窗口的高度
- // isCenter-控制弹出窗口是否在屏幕中央显示,值为true/false
- // isResizable-控制弹出窗口是否可以改变大小,值为true/false
- // isScroll-控制弹出窗口是否有滚动条,值为true/false
- //——–
- function popupWindow(url,w,h,isCenter,isResizable,isScroll) {
- if (isNULL(url)) return;
- var scrLeft = 0;
- var scrTop = 0;
- var scroll = "no";
- var resize = "no";
- if (isCenter) {
- scrLeft = (screen.width-w)/2;
- scrTop = (screen.height-h)/2;
- }
- if (isResizable) resize="yes";
- if (isScroll) scroll = "yes";
- window.open(url, ‘popupWindow’,
- ‘height=’+h+‘,width=’+w+‘,top=’+scrTop+‘,left=’+scrLeft+‘,toolbar=no,menubar=no,scrollbars=’+scrol
- l+‘,resizable=’+resize+‘,location=no,status=no’);
- }
- //——–
- // 弹出窗口
- // 参数:url-弹出窗口显示URL的内容
- // w-弹出窗口的宽度
- // h-弹出窗口的高度
- // isCenter-控制弹出窗口是否在屏幕中央显示,值为true/false
- // isResizable-控制弹出窗口是否可以改变大小,值为true/false
- // isModal-控制弹出窗口是否为模式或非模式对话框,值为ture/false
- //——–
- function popupModalWindow(url,w,h,isCenter,isResizable,isModal) {
- if (isNULL(url)) return;
- var scrLeft = 0;
- var scrTop = 0;
- var resize = "no";
- var cnt = "no";
- if (isCenter) {
- cnt="yes";
- scrLeft = (screen.width-w)/2;
- scrTop = (screen.height-h)/2;
- }
- if (isResizable) resize="yes";
- if (isModal)
- window.showModalDialog(url, ‘popupWindow’,
- ‘dialogWidth:’+w+‘px;dialogHeight:’+h+‘px;dialogLeft:’+scrLeft+‘px;dialogTop:’+scrTop+‘px;center:’
- +cnt+‘;help:no;resizable:’+resize+‘;status:no’);
- else
- window.showModelessDialog(url, ‘popupWindow’,
- ‘dialogWidth:’+w+‘px;dialogHeight:’+h+‘px;dialogLeft:’+scrLeft+‘px;dialogTop:’+scrTop+‘px;center:’
- +cnt+‘;help:no;resizable:’+resize+‘;status:no’);
- }
- //——–
- // 弹出窗口
- // 参数:url-弹出窗口显示URL的内容
- // w-弹出窗口的宽度
- // h-弹出窗口的高度
- // isCenter-控制弹出窗口是否在屏幕中央显示,值为true/false
- // isResizable-控制弹出窗口是否可以改变大小,值为true/false
- // isScroll-控制弹出窗口是否有滚动条,值为true/false
- //——–
- function openWindowCenter(urll,w,h){
- var top=(window.screen.height-h)/2;
- var left=(window.screen.width-w)/2;
- var param=‘toolbar=no,menubar=no,scrollbars=yes,resizable=no,location=no, status=no,top=’;
- param=param+top;
- param=param+‘,left=’;
- param=param+left;
- param=param+‘,height=’+h;
- param=param+‘,width=’+w;
- var w=window.open (urll,"",param)
- if(w!=null && typeof(w)!="undefined"){
- w.focus();
- }
- }
JavaScript写的倒计时例子
六 20th
按钮可用状态倒计时…(JavaScript)
今天在一个网站注册的时候, 看到了在服务条款和声明的时候, 我同意这个按钮要等几秒钟才可用, 虽然以前也看到过, 但这几天实在是闲着无聊, 所以, 嘿, 咱也来一个吧.
<form name="frm">
<input type="submit" name="btnSubmit" value="我同意" />
</form>
<script language="javascript">
<!–
var sec = 9;
var wait = sec * 1000;
document.frm.btnSubmit.value = "我同意[" + sec + "]";
document.frm.btnSubmit.disabled = true;
for(var i = 0; i <= sec; i++) {
window.setTimeout("TimeUpdate(" + i + ")", i * 1000);
}
window.setTimeout("TimeOk()", wait);
function TimeUpdate(num) {
if(num != sec) {
var pntNum = (wait / 1000) - num;
document.frm.btnSubmit.value = "我同意[" + pntNum + "]";
}
}
function TimeOk() {
document.frm.btnSubmit.value = "我同意";
document.frm.btnSubmit.disabled = false;
}
//–>
</script>
第一种:精确到秒的javascript倒计时代码
<form name="form1">
<div align="center" align="middle">
<center>离2010年还有:<br>
<input type="textarea" name="left" size="35" style="text-align: center">
</center>
</div>
</form>
<script LANGUAGE="javascript">
startclock()
var timerID = null;
var timerRunning = false;
function showtime() {
Today = new Date();
var NowHour = Today.getHours();
var NowMinute = Today.getMinutes();
var NowMonth = Today.getMonth();
var NowDate = Today.getDate();
var NowYear = Today.getYear();
var NowSecond = Today.getSeconds();
if (NowYear <2000)
NowYear=1900+NowYear;
Today = null;
Hourleft = 23 – NowHour
Minuteleft = 59 – NowMinute
Secondleft = 59 – NowSecond
Yearleft = 2009 – NowYear
Monthleft = 12 – NowMonth – 1
Dateleft = 31 – NowDate
if (Secondleft<0)
{
Secondleft=60+Secondleft;
Minuteleft=Minuteleft-1;
}
if (Minuteleft<0)
{
Minuteleft=60+Minuteleft;
Hourleft=Hourleft-1;
}
if (Hourleft<0)
{
Hourleft=24+Hourleft;
Dateleft=Dateleft-1;
}
if (Dateleft<0)
{
Dateleft=31+Dateleft;
Monthleft=Monthleft-1;
}
if (Monthleft<0)
{
Monthleft=12+Monthleft;
Yearleft=Yearleft-1;
}
Temp=Yearleft+’年, ‘+Monthleft+’月, ‘+Dateleft+’天, ‘+Hourleft+’小时, ‘+Minuteleft+’分, ‘+Secondleft+’秒’
document.form1.left.value=Temp;
timerID = setTimeout("showtime()",1000);
timerRunning = true;
}
var timerID = null;
var timerRunning = false;
function stopclock () {
if(timerRunning)
clearTimeout(timerID);
timerRunning = false;
}
function startclock () {
stopclock();
showtime();
}
// –>
</script>
第二种:某某运动会
<script language="JavaScript">
<!–
function DigitalTime1()
{
var deadline= new Date("08/13/2007") //开幕倒计时
var symbol="8月13日"
var now = new Date()
var diff = -480 – now.getTimezoneOffset() //是北京时间和当地时间的时间差
var leave = (deadline.getTime() – now.getTime()) + diff*60000
var day = Math.floor(leave / (1000 * 60 * 60 * 24))
var hour = Math.floor(leave / (1000*3600)) – (day * 24)
var minute = Math.floor(leave / (1000*60)) – (day * 24 *60) – (hour * 60)
var second = Math.floor(leave / (1000)) – (day * 24 *60*60) – (hour * 60 * 60) – (minute*60)
var deadline_2= new Date("08/13/2004") //开幕后计时
var symbol_2="8月13日"
var now_2 = new Date()
var diff_2 = -480 – now.getTimezoneOffset() //是北京时间和当地时间的时间差
var leave_2 = (now_2.getTime() – deadline_2.getTime()) + diff_2*60000
var day_2 = Math.floor(leave_2 / (1000 * 60 * 60 * 24))
var hour_2 = Math.floor(leave_2 / (1000*3600)) – (day_2 * 24)
var minute_2 = Math.floor(leave_2 / (1000*60)) – (day_2 * 24 *60) – (hour_2 * 60)
var second_2 = Math.floor(leave_2 / (1000)) – (day_2 * 24 *60*60) – (hour_2 * 60 * 60) – (minute_2*60)
day=day+1;
day_2=day_2+1;
if (day>0) //还未开幕
{
//LiveClock1.innerHTML = "现在"+symbol+"天"
LiveClock1.innerHTML = "<font class=fon1>距离"+symbol+"开幕还有<font class=fon2>"+day+"</font>天</font>"
setTimeout("DigitalTime1()",1000)
}
if (day<0) //已经开幕
{
//LiveClock1.innerHTML = "现在离"+symbol+"还有"+day+"天"+hour+"小时"+minute+"分"+second +"秒"
LiveClock1.innerHTML = "<font class=fon1>"+symbol+"开幕已有<font class=fon2>"+day_2+"</font>天</font>"
setTimeout("DigitalTime1()",1000)
}
if (day==0) //正在开幕
{
//LiveClock1.innerHTML = "现在"+symbol+"天"
LiveClock1.innerHTML = "<font class=fon1>某某运动会今天开幕</font>"
setTimeout("DigitalTime1()",1000)
}
if (day<0 & day_2>19) //某某运动会结束
{
//LiveClock1.innerHTML = "现在离"+symbol+"还有"+day+"天"+hour+"小时"+minute+"分"+second +"秒"
LiveClock1.innerHTML = "<font class=fon1>某某运动会已全部结束</font>"
setTimeout("DigitalTime1()",1000)
}
}
// –>
</script>
<!–倒计时Javascript end–>
<body onload=DigitalTime1()>
<div id= LiveClock1></div>
</body>
第三种:小时倒计时
<!–
var maxtime = 60*60 //一个小时,按秒计算,自己调整!
function CountDown(){
if(maxtime>=0){
minutes = Math.floor(maxtime/60);
seconds = Math.floor(maxtime%60);
msg = "距离结束还有"+minutes+"分"+seconds+"秒";
document.all["timer"].innerHTML=msg;
if(maxtime == 5*60) alert(‘注意,还有5分钟!’);
–maxtime;
}
else{
clearInterval(timer);
alert("时间到,结束!");
}
}
timer = setInterval("CountDown()",1000);
//–>
</SCRIPT>
<div id="timer" style="color:red"></div>
第四种:最简倒计时
<!– Begin
var timedate= new Date("January 14,2006");
var times="研究生考试";
var now = new Date();
var date = timedate.getTime() – now.getTime();
var time = Math.floor(date / (1000 * 60 * 60 * 24));
if (time >= 0) ;
document.write("<li><font color=#DEDBDE>现在离2006年"+times+"还有: <font color=#ffffff><b>"+time +"</b></font> 天</font></li>");
// End –>
</Script>
第四种:最简倒计时二
function djs(){
var urodz= new Date("11/12/2008");
var now = new Date();
var num
var ile = urodz.getTime() – now.getTime();
var dni = Math.floor(ile / (1000 * 60 * 60 * 24));
if (dni >1)
num=dni+1
else if (dni == 1) num=2
else if (dni == 0) num=1
else num=0
document.write(num)
}
</script>
距某某开幕式还有 [<script language="JavaScript" type="text/javascript">djs()</script>] 天
第五个:Javascript倒计时器 – 采用系统时间自校验
这次利用系统时间自校验倒计时, 无需手工调校使得倒计时更为精确, 代码及详细注释如下:
<span id="clock">00:01:11:00</span>
<input id="startB" type="button" value="start countdown!" onclick="run()">
<input id="endB" type="button" value="stop countdown!" onclick="stop()">
<br>
<input id="diff" type="text">
<input id="next" type="text">
<script language="Javascript">
/* This notice must be untouched at all times.
countdown.js v. 1.0
The latest version is available at
http://blog.csdn.net/yjgx007
Copyright (c) 2004 Xinyi.Chen. All rights reserved.
Created 7/30/2004 by Xinyi.Chen.
Web: http://blog.csdn.net/yjgx007
E-Mail: chenxinyi1978@hotmail.com
Last modified: 7/30/2004
This program is free software;
you can redistribute it and/or modify it under the terms of the
GNU General Public License as published by the Free Software Foundation;
See the GNU General Public License
at http://www.gnu.org/copyleft/gpl.html for more details.
*/
var normalelapse = 100;
var nextelapse = normalelapse;
var counter;
var startTime;
var start = clock.innerText;
var finish = "00:00:00:00";
var timer = null;
// 开始运行
function run() {
startB.disabled = true;
endB.disabled = false;
counter = 0;
// 初始化开始时间
startTime = new Date().valueOf();
// nextelapse是定时时间, 初始时为100毫秒
// 注意setInterval函数: 时间逝去nextelapse(毫秒)后, onTimer才开始执行
timer = window.setInterval("onTimer()", nextelapse);
}
// 停止运行
function stop() {
startB.disabled = false;
endB.disabled = true;
window.clearTimeout(timer);
}
window.onload = function() {
endB.disabled = true;
}
// 倒计时函数
function onTimer()
{
if (start == finish)
{
window.clearInterval(timer);
alert("time is up!");
return;
}
var hms = new String(start).split(":");
var ms = new Number(hms[3]);
var s = new Number(hms[2]);
var m = new Number(hms[1]);
var h = new Number(hms[0]);
ms -= 10;
if (ms < 0)
{
ms = 90;
s -= 1;
if (s < 0)
{
s = 59;
m -= 1;
}
if (m < 0)
{
m = 59;
h -= 1;
}
}
var ms = ms < 10 ? ("0" + ms) : ms;
var ss = s < 10 ? ("0" + s) : s;
var sm = m < 10 ? ("0" + m) : m;
var sh = h < 10 ? ("0" + h) : h;
start = sh + ":" + sm + ":" + ss + ":" + ms;
clock.innerText = start;
// 清除上一次的定时器
window.clearInterval(timer);
// 自校验系统时间得到时间差, 并由此得到下次所启动的新定时器的时间nextelapse
counter++;
var counterSecs = counter * 100;
var elapseSecs = new Date().valueOf() – startTime;
var diffSecs = counterSecs – elapseSecs;
nextelapse = normalelapse + diffSecs;
diff.value = counterSecs + "-" + elapseSecs + "=" + diffSecs;
next.value = "nextelapse = " + nextelapse;
if (nextelapse < 0) nextelapse = 0;
// 启动新的定时器
timer = window.setInterval("onTimer()", nextelapse);
}
</script>
重载的confirm弹出框, 焦点在取消上
六 20th
<script language=javascript><!–
/*@cc_on @*/
/*@if (@_win32 && @_jscript_version>=5)
function window.confirm(str)
{
execScript("n = msgbox(‘"+ str +"’, 257, ‘自定的的 confirm’)", "vbscript");
return(n == 1);
}
@end @*/
alert(confirm("重载的confirm弹出框, 焦点在取消上"));
// –></script>
最近评论