JavaScript

JavaScript中日期的比较

在JavaScript中比较两个Date日期对象的大小时,可以直接使用运行符进行。

具体描述如下:

  1. <script> 
  2. var strdt1="2007-5-12 0:00"
  3. var strdt2="2007-5-10 0:00"
  4. strdt1 = strdt1.replace(/-/g, "/"); 
  5. strdt2 = strdt2.replace(/-/g, "/");  
  6.  
  7. var dt1=new Date(Date.parse(strdt1)); 
  8. var dt2=new Date(Date.parse(strdt2)); 
  9. alert(dt1>dt2); 
  10. </script> 

运行的结果为:TRUE

与本机当前日期比较的代码:

  1. <script> 
  2. var strdt2="2007-5-12 0:00"
  3. strdt2 = strdt2.replace(/-/g, "/"); 
  4.  
  5. var dt1=new Date(); //Mon Jul 13 2009 21:32:52 GMT+0800
  6. var dt2=new Date(Date.parse(strdt2)); 
  7. alert(dt1>dt2); 
  8. </script> 

运行的结果为:TRUE

记录,备忘。

本来的目的是记录在使用过程中出现奇怪的结果,但是在刚才的测试中日期比较的结果都正常。

呵呵,或许是之前的代码有误吧。 

JavaScript压缩工具ESC.wsf

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窗口时不出现提示

在IE7中使用window.close();自动关闭窗口时会出现确认关闭的提示.

以下代码可以防止出现这样的提示:

JavaScript代码
  1. <script language="javascript">   
  2.   
  3.     openLogin();   
  4.        
  5.     function randomNumber(limit){   
  6.       return Math.floor(Math.random()*limit);   
  7.     }   
  8.        
  9.     function openLogin() {   
  10.        
  11.         var loginWidth=718;   
  12.         var loginHeight=540;   
  13.         x=(screen.width-loginWidth)/2;   
  14.         y=(screen.height-loginHeight)/2;   
  15.        
  16.         window.resizeTo(loginWidth,loginHeight+20);   
  17.         window.moveTo(x,y);   
  18.            
  19.         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);   
  20.         window.opener = null;    // 关闭IE6、IE7窗口不再提示   
  21.         window.open(,‘_top’); // 关闭IE7窗口不再提示   
  22.         window.close();   
  23.     }   
  24.        
  25. </script>   

以下是在IE6中有效的代码:

JavaScript代码
  1. function DestroySelf()   
  2. {   
  3.     var oMe = window.self;   
  4.     oMe.opener = window.self;   
  5.     oMe.close();   
  6. }   
  7.   
  8. function LoginSucc(pc)   
  9. {      
  10.     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");   
  11.     setTimeout("DestroySelf()",100);   
  12. }  

从阿里妈妈学习到的表单验证函数

学习到的函数实现如下功能:检查当前浏览器是否为Netscape,保存当前Form表单(仅适用于IE浏览器),校验数据的合法性,判断是否为闰年,弹出窗口,校验日期的合法性等。

具体代码如下:

函数的具体功能在文件的注释中有详细介绍。

JavaScript代码
  1. //——–    
  2. // 检查当前浏览器是否为Netscape    
  3. //——–    
  4. function isNetscape(){    
  5.     app=navigator.appName.substring(0,1);    
  6.     if (app==‘N’return true;    
  7.     else {return false;}    
  8. }    
  9. //——–    
  10. // 保存当前Form表单(仅适用于IE浏览器)    
  11. //——–    
  12. function formSaveCheck(fileName){    
  13.     if(isNetscape()){alert("Sorry, these function is not supported")}        
  14.     else document.execCommand(‘SaveAs’,null,fileName)    
  15. }    
  16. //——–    
  17. // 校验数据的合法性    
  18. //——–    
  19. function isValidReg( chars){    
  20.     var re=/<|>|\[|\]|\{|\}|『|』|※|○|●|◎|§|△|▲|☆|★|◇|◆|□|▼|㊣|﹋|⊕|⊙|〒|ㄅ|ㄆ|    
  21. ㄇ|ㄈ|ㄉ|ㄊ|ㄋ|ㄌ|ㄍ|ㄎ|ㄏ|ㄐ|ㄑ|ㄒ|ㄓ|ㄔ|ㄕ|ㄖ|ㄗ|ㄘ|ㄙ|ㄚ|ㄛ|ㄜ|ㄝ|ㄞ|ㄟ|ㄢ|ㄣ|ㄤ|ㄥ|ㄦ|ㄧ|ㄨ|ㄩ    
  22. |■|▄|▆|\*|@|#|\^|\\/;    
  23.     if (re.test( chars) == true) {    
  24.         return false;    
  25.     }else{    
  26.         return true;    
  27.     }        
  28. }    
  29. //——–    
  30. // 检查数据的长度是否合法    
  31. //——–    
  32. function isValidLength(chars, len) {    
  33.     if (chars.length > len) {    
  34.         return false;    
  35.     }    
  36.     return true;    
  37. }    
  38. //——–    
  39. // 校验URL的合法性    
  40. //——–    
  41. function isValidURL( chars ) {    
  42.     //var re=/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)((((\w+(-*\w*)+)\.)+((com)|    
  43. (net)|(edu)|(gov)|(org)|(biz)|(aero)|(coop)|(info)|(name)|(pro)|(museum))(\.([a-z]{2}))?)|((\w+(-    
  44. *\w*)+)\.(cn)))$/;    
  45.     var re=/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(\S+\.\S+)$/;    
  46.     //var re=/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(((((\w+(-*\w*)+)\.)+((com)|    
  47. (net)|(edu)|(gov)|(org)|(biz)|(aero)|(coop)|(info)|(name)|(pro)|(museum)|(cn)|(tv)|(hk))(\.([a-z]    
  48. {2}))?)|((\w+(-*\w*)+)\.(cn)))((\/|\?)\S*)*)$/;    
  49.     if (!isNULL(chars)) {    
  50.         chars = jsTrim(chars);    
  51.         if (chars.match(re) == null)    
  52.             return false;    
  53.         else    
  54.             return true;    
  55.     }    
  56.     return false;    
  57. }    
  58. //——–    
  59. // 校验数字的合法性    
  60. //——–    
  61. function isValidDecimal( chars ) {    
  62.     var re=/^\d*\.?\d{1,2}$/;    
  63.     if (chars.match(re) == null)    
  64.         return false;    
  65.     else    
  66.         return true;    
  67. }    
  68. //——–    
  69. // 校验数字的合法性    
  70. //——–    
  71. function isNumber( chars ) {    
  72.     var re=/^\d*$/;    
  73.     if (chars.match(re) == null)    
  74.         return false;    
  75.     else    
  76.         return true;    
  77. }    
  78. //——–    
  79. // 校验邮编的合法性    
  80. //——–    
  81. function isValidPost( chars ) {    
  82.     var re=/^\d{6}$/;    
  83.     if (chars.match(re) == null)    
  84.         return false;    
  85.     else    
  86.         return true;    
  87. }    
  88. //——–    
  89. // 去掉数据的首尾空字符    
  90. //——–    
  91. function jsTrim(value){    
  92.   return value.replace(/(^\s*)|(\s*$)/g,"");    
  93. }    
  94. //——–    
  95. // 校验数据是否为空(当数据为空字符时也为NULL)    
  96. //——–    
  97. function isNULL( chars ) {    
  98.     if (chars == null)    
  99.         return true;    
  100.     if (jsTrim(chars).length==0)    
  101.         return true;    
  102.     return false;    
  103. }    
  104. //——–    
  105. // 校验Email的合法性    
  106. //——–    
  107. function checkEmail (fieldName, bMsg)     
  108. {    
  109.     var emailStr = fieldName.value;    
  110.     var emailPat=/^(.+)@(.+)$/    
  111.     var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"    
  112.     var validChars="\[^\\s" + specialChars + "\]"    
  113.     var quotedUser="(\"[^\"]*\")"    
  114.     var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/    
  115.     var atom=validChars + ‘+’    
  116.     var word="(" + atom + "|" + quotedUser + ")"    
  117.     var userPat=new RegExp("^" + word + "(\\." + word + ")*$")    
  118.     var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")    
  119.     var matchArray=emailStr.match(emailPat)    
  120.     if (matchArray==null)     
  121.     {    
  122.         if (bMsg) alert("Email address seems incorrect (check @ and .’s)")    
  123.         return false    
  124.     }    
  125.     var user=matchArray[1]    
  126.     var domain=matchArray[2]    
  127.     // See if "user" is valid     
  128.     if (user.match(userPat)==null)     
  129.     {    
  130.         if (bMsg) alert("The Email address seems incorrect.")    
  131.         // fieldName.focus();    
  132.         return false    
  133.     }    
  134.     /* if the e-mail address is at an IP address (as opposed to a symbolic   
  135.        host name) make sure the IP address is valid. */    
  136.     var IPArray=domain.match(ipDomainPat)    
  137.     if (IPArray!=null)     
  138.     {    
  139.         for (var i=1;i<=4;i++)    
  140.         {    
  141.             if (IPArray[i]>255)    
  142.             {    
  143.                 if (bMsg) alert("Destination IP address is invalid!")    
  144.                 return false    
  145.             }    
  146.         }    
  147.         return true    
  148.     }    
  149.     // Domain is symbolic name    
  150.     var domainArray=domain.match(domainPat)    
  151.     if (domainArray==null)     
  152.     {    
  153.         if (bMsg) alert("The domain name doesn’t seem to be valid.")    
  154.         return false    
  155.     }    
  156.     /* domain name seems valid, but now make sure that it ends in a   
  157.     three-letter word (like com, edu, gov) or a two-letter word,   
  158.     representing country (uk, nl), and that there’s a hostname preceding    
  159.     the domain or country. */    
  160.     var atomPat=new RegExp(atom,"g")    
  161.     var domArr=domain.match(atomPat)    
  162.     var len=domArr.length    
  163.     if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3)     
  164.     {    
  165.         // the address must end in a two letter or three letter word.    
  166.         if (bMsg) alert("The address must end in a three-letter domain, or two letter country.")    
  167.         return false    
  168.     }    
  169.     // Make sure there’s a host name preceding the domain.    
  170.     if (len<2)    
  171.     {    
  172.         if (bMsg) alert("This address is missing a hostname!")    
  173.         return false    
  174.     }    
  175.     // If we’ve got this far, everything’s valid!    
  176.     return true;    
  177. }    
  178. //——–    
  179. // 判断是否为闰年    
  180. //——–    
  181. function isLeapYear(year){    
  182.   if (year % 4 != 0)    
  183.     return false;    
  184.   if (year % 400 == 0)    
  185.     return true;    
  186.   if (year % 100 == 0)    
  187.     return false;    
  188.   return true;    
  189. }    
  190. //——–    
  191. // 校验日期的合法性    
  192. //——–    
  193. function validateDate(day,month,year)    
  194. {    
  195.     if ((day<=0)||(month<=0)||(year<=0))    
  196.         return false;    
  197.     if ((month>=1)&&(month<=12)) {    
  198.         if (month == 2) {    
  199.             if (isLeapYear(year)) {    
  200.                 if (day<=29)     
  201.                     return true;    
  202.             } else {    
  203.                 if (day<=28)    
  204.                     return true;    
  205.                 else    
  206.                     return false;    
  207.             }    
  208.         } else if ((month==4)||(month==6)||(month==9)||(month==11)) {    
  209.             if (day<=30)    
  210.                 return true;    
  211.             else    
  212.                 return false;    
  213.         } else {    
  214.             if (day<=31)    
  215.                 return true;    
  216.             else    
  217.                 return false;    
  218.         }    
  219.     }    
  220.     return false;    
  221. }    
  222. //——–    
  223. // 判断数据是否包含都是Single Byte    
  224. //——–    
  225. function isSingleByteString(str)    
  226. {    
  227.    var rc = true;    
  228.    var j = 0, i = 0;    
  229.    for (i=0; i<str.length; i++) {    
  230.      j = str.charCodeAt(i);    
  231.      if (j>=128) {    
  232.        rc = false;    
  233.        break;    
  234.      }    
  235.    }    
  236.    return rc;    
  237. }    
  238. var submitEvent = true;    
  239. function checkDoubleSubmit(){    
  240.     return submitEvent;    
  241. }    
  242. //——–    
  243. // 弹出窗口    
  244. // 参数:url-弹出窗口显示URL的内容    
  245. //       w-弹出窗口的宽度    
  246. //       h-弹出窗口的高度    
  247. //       isCenter-控制弹出窗口是否在屏幕中央显示,值为true/false    
  248. //       isResizable-控制弹出窗口是否可以改变大小,值为true/false    
  249. //       isScroll-控制弹出窗口是否有滚动条,值为true/false    
  250. //——–    
  251. function popupWindow(url,w,h,isCenter,isResizable,isScroll) {    
  252.     if (isNULL(url)) return;    
  253.     var scrLeft = 0;    
  254.     var scrTop = 0;    
  255.     var scroll = "no";    
  256.     var resize = "no";    
  257.     if (isCenter) {    
  258.         scrLeft = (screen.width-w)/2;    
  259.         scrTop = (screen.height-h)/2;    
  260.     }    
  261.     if (isResizable) resize="yes";    
  262.     if (isScroll) scroll = "yes";    
  263.     window.open(url, ‘popupWindow’,     
  264. ‘height=’+h+‘,width=’+w+‘,top=’+scrTop+‘,left=’+scrLeft+‘,toolbar=no,menubar=no,scrollbars=’+scrol    
  265. l+‘,resizable=’+resize+‘,location=no,status=no’);    
  266. }    
  267. //——–    
  268. // 弹出窗口    
  269. // 参数:url-弹出窗口显示URL的内容    
  270. //       w-弹出窗口的宽度    
  271. //       h-弹出窗口的高度    
  272. //       isCenter-控制弹出窗口是否在屏幕中央显示,值为true/false    
  273. //       isResizable-控制弹出窗口是否可以改变大小,值为true/false    
  274. //       isModal-控制弹出窗口是否为模式或非模式对话框,值为ture/false    
  275. //——–    
  276. function popupModalWindow(url,w,h,isCenter,isResizable,isModal) {    
  277.     if (isNULL(url)) return;    
  278.     var scrLeft = 0;    
  279.     var scrTop = 0;    
  280.     var resize = "no";    
  281.     var cnt = "no";    
  282.     if (isCenter) {    
  283.         cnt="yes";    
  284.         scrLeft = (screen.width-w)/2;    
  285.         scrTop = (screen.height-h)/2;    
  286.     }    
  287.     if (isResizable) resize="yes";    
  288.     if (isModal)    
  289.         window.showModalDialog(url, ‘popupWindow’,     
  290. ‘dialogWidth:’+w+‘px;dialogHeight:’+h+‘px;dialogLeft:’+scrLeft+‘px;dialogTop:’+scrTop+‘px;center:’    
  291. +cnt+‘;help:no;resizable:’+resize+‘;status:no’);    
  292.     else    
  293.         window.showModelessDialog(url, ‘popupWindow’,     
  294. ‘dialogWidth:’+w+‘px;dialogHeight:’+h+‘px;dialogLeft:’+scrLeft+‘px;dialogTop:’+scrTop+‘px;center:’    
  295. +cnt+‘;help:no;resizable:’+resize+‘;status:no’);    
  296. }    
  297. //——–    
  298. // 弹出窗口    
  299. // 参数:url-弹出窗口显示URL的内容    
  300. //       w-弹出窗口的宽度    
  301. //       h-弹出窗口的高度    
  302. //       isCenter-控制弹出窗口是否在屏幕中央显示,值为true/false    
  303. //       isResizable-控制弹出窗口是否可以改变大小,值为true/false    
  304. //       isScroll-控制弹出窗口是否有滚动条,值为true/false    
  305. //——–    
  306. function openWindowCenter(urll,w,h){    
  307.   var top=(window.screen.height-h)/2;    
  308.   var left=(window.screen.width-w)/2;    
  309.   var param=‘toolbar=no,menubar=no,scrollbars=yes,resizable=no,location=no, status=no,top=’;    
  310.   param=param+top;    
  311.   param=param+‘,left=’;    
  312.   param=param+left;    
  313.   param=param+‘,height=’+h;    
  314.   param=param+‘,width=’+w;    
  315.   var w=window.open (urll,"",param)    
  316.   if(w!=null && typeof(w)!="undefined"){    
  317.         w.focus();    
  318.   }    
  319. } 

JavaScript写的倒计时例子

按钮可用状态倒计时…(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倒计时代码

HTML代码:

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

第二种:某某运动会

HTML代码:
<!–倒计时Javascript begin–>
 <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>

第三种:小时倒计时

HTML代码:
<SCRIPT LANGUAGE="JavaScript">
<!–
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>

第四种:最简倒计时

HTML代码:
<Script Language="JavaScript">
<!– 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>

第四种:最简倒计时二

HTML代码:
<script language="JavaScript" type="text/javascript">
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弹出框, 焦点在取消上

重载的confirm弹出框, 焦点在取消上
 
重新定义JS里的confirm
<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>
http://www.zahui.com/html/12/23036.htm 这里的文章都是比较好的,强烈推荐去看一下啊。