1,只执行一次的定时器 5 W( r6 G1 O) t' V& ?; t
- <script> % _ ~- v' |* t3 b
- //定时器 异步运行
8 D1 b( `1 p5 g# v9 X4 ~ - function hello(){ n! p9 Z" s( E* }6 f
- alert("hello"); ! F7 h6 z" V7 x! A, ~
- }
4 I; O& E* Y3 _% I" ? - //使用方法名字执行方法 5 \% y8 L; z' R8 X( u0 N( P3 M
- var t1 = window.setTimeout(hello,1000); / O+ W' I- Y/ b2 E, w# z
- var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法 ! [2 W3 W4 Y X3 ?; @
- window.clearTimeout(t1);//去掉定时器 7 h3 r. }, o5 o: m. ~, H6 {
- </script>
复制代码 2,重复执行的定时器
, P$ [4 f! j8 }: F: |- <script>
# H" {4 @! P: k" { - function hello(){ . N$ W9 K9 W) I# j
- alert("hello");
) @" C3 I, [. J/ X# w - }
" p, k K# ]3 N2 {$ x - //重复执行某个方法
* Z& a# e. D2 l1 d; e/ l - var t1 = window.setInterval(hello,1000); 0 S4 P4 X1 `6 K! a6 F' u
- var t2 = window.setInterval("hello()",3000); ) X; Q7 k6 Z3 t
- //去掉定时器的方法 % z* J! N- O/ h7 E: P Q0 W
- window.clearInterval(t1);
' n/ s! E$ j! f2 w, A - </script>
复制代码 备注:
* X% q* ?9 k( F# p$ u; I. G4 P# q1 y
如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决: , |, e C* a M9 g
可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。
z! N: `: [1 X) ? ]3 w( K3 G
L5 }8 Q$ q$ y" }3 k/ @在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);) v+ x6 L- \4 L( s9 j8 j7 R
2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成$ Q% H% D6 Y( D
“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。! Z% m+ F% O+ m7 S
倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。' Q; ~% \4 h$ N( N1 X4 l
比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,
|9 U/ t @) B1 q! n, r则需要用到循环定时器“setInterval("function();",delaytime)” 。 获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。
" K% U( `; }1 p4 d比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。 定时器: 用以指定在一段特定的时间后执行某段程序。 JS中定时执行,setTimeout和setInterval的区别,以及l解除方法 setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。
; P% e( ^( x! h# ~& K* v YsetTimeout("function",time) 设置一个超时对象 setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.
; D; A6 N1 k, [: g9 v" ~0 s% c( \setInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复。 clearTimeout(对象) 清除已设置的setTimeout对象- O# _9 v3 v8 Q% K9 O$ Y2 l: ?$ b
clearInterval(对象) 清除已设置的setInterval对象 略举两例。: Z- {& M8 ~3 `/ Y8 b7 D
例1.表单触发或加载时,逐字输出字符串
" x! Q& A1 Z: G# i+ t/ M7 k- <html>
, m1 ~3 s, G$ y% V' ] - <head>0 { E. H( S, H
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
7 [" @9 N7 ?3 O - <title>无标题文档</title>
' z1 ~5 G) @9 e - <script language="JavaScript" type="text/javascript">
% ]: c7 h( [+ c5 I3 q$ s/ z - var str = "这个是测试用的范例文字";
, Z- S' J) S `2 l6 s6 y - var seq = 0;
# }# R# Z& ?+ @2 `& D- _0 v+ Z - var second=1000; //间隔时间1秒钟6 ~4 \' T$ r9 @, [* E
- function scroll() {" a4 K }6 D) g4 L% p% z, h
- msg = str.substring(0, seq+1);+ L3 @) c* J- _
- document.getElementByIdx_x_x('word').innerHTML = msg;# P0 g0 p, r3 N% t
- seq++;4 e+ j, y2 t, C) r8 c3 f% n, \* d
- if (seq >= str.length) seq = 0;
# O' M( ?' w( a2 q1 s - }% f" _! Y' j$ u4 |6 u
- </script>
8 q3 j; b1 j8 L2 X0 I& ~ - </head>2 j3 h/ v+ {1 Y) o/ b6 C
- <body onload="setInterval('scroll()',second)">
$ k% P9 u5 s, G- C# O - <div id="word"></div><br/><br/>- b u3 z/ k# A& T) z; k
- </body>
& |; y. F' S$ y2 v( F8 Q( y - </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。# k, p' R) x$ Q1 p6 Y! W7 \3 h
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' Y+ q5 p1 Y$ j; u
- <html xmlns="http://www.w3.org/1999/xhtml">
* X4 }2 c) v: D' z' z. z - <head>
; _. b, O' D* `& @ - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />3 d4 s+ ^* L" S" I7 k9 p
- <title>无标题文档</title>- Y. b! o1 a* x! S5 f' l; l' z1 N
- <script language="JavaScript" type="text/javascript">
5 m/ X+ k& }+ R. K3 B1 N - var second=5000; //间隔时间5秒钟
5 }, t( ?6 ]- _& N" |5 ? - var c=0;. M/ W4 W3 `+ D1 |9 d$ V5 L" L; ~! a$ Y
- function scroll() {" o" w. u- N1 p
- c++;- S8 E) i3 @% M1 Q* |& N
- if ("b" == document.activeElement.id) {
: w3 ^ N3 W5 N/ T - var str="定时检查第<b> "+c+" </b>次<br/>";6 T! s& K- X( u" p* k) q
- if(document.getElementByIdx_x_x('b').value!=""){
# v; Z* `( `% m8 a6 V D. [ - str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";
* D$ F% S8 x( f O! l - }. s$ P1 r: x) H- K8 }5 A
- document.getElementByIdx_x_x('word').innerHTML = str;
8 v5 ?( f5 u- l# K: z" R - } N) V) _' w" I: M+ U
- }
9 t: {) ^, u& l5 R' @/ Z0 w/ u/ V0 l, Z - </script>4 K) u( ~" D. H
- </head>
- z; T3 g" v! r T# A+ C - <body>
" i, |' D# H2 ^' D' ?& g: @ - <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>5 K, V. x6 q6 N: m: C
- <div id="word"></div><br/><br/>
! H6 J' V- m1 }8 E& H - </body>
' R" i5 D2 @( } - </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。" Y8 V3 I/ a% t2 [! R
- <html xmlns="http://www.w3.org/1999/xhtml">
3 u2 P! }+ U8 D$ x" { - <head>
! M. A% M2 c5 ~* u7 _" N - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />1 a# Q" H& F3 s: Z- |! H
- <script language="javascript">5 l' R, i$ w2 _% N! L0 E0 X( o: X
- function count() {: R9 ?" k+ K) R4 a
- document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";$ M5 r3 e( g {0 v% I
- setTimeout("alert('十秒钟到!')",10000)
9 b6 U) Y- q4 |2 \1 t Z - }! X% Y0 {. m9 `, Q
- </script>8 E2 Y; p3 i0 m' @% h# j u
- <body>
) V0 i) j8 L- M! |* d3 ~ - <div id="m"></div>
5 }* w0 D8 n7 c9 E - <input TYPE="button" value=" 计时开始" onclick="count()">
4 b& u8 U' j, l# S* B) T - </body>
: b5 |, @5 Y# `; ^9 ^5 Q: f8 h - </html>
复制代码 例4:倒计时定时跳转& U" z8 h" [- f2 i
- <html>
' U# W* _2 @. E - <head>
( P! L3 |$ l0 ~( I$ G - <base href="<%=basePath%>">
8 i4 |+ T2 b# e6 H3 ]6 ^ - <title>My JSP 'ds04.jsp' starting page</title>/ a. Y! s8 J4 Z
- <span id="tiao">3</span>
h* P0 P1 I9 |: Y( O, j3 \" H - <a href="javascript:countDown"> </a>秒后自动跳转…… @' s+ w. U1 @) C
- <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>
" q& S8 e0 X, \% r( b9 L+ C - <!--脚本开始-->
* m9 T' J% f: j" f - <script language="javascript" type="">
$ v+ r2 E+ [- ^: f4 f - function countDown(secs){
4 G2 Q! c9 [( | - tiao.innerText=secs;
; E% ]% C: v& @) b# B0 f- Q' l - if(--secs>0)9 t3 j2 A9 m% S/ \7 e) k. |
- setTimeout("countDown("+secs+")",1000);
* U9 g$ w/ l, s: O7 K/ t7 b - }
: q: q* o8 r U; s3 g3 q5 L - countDown(3);" q) P2 c) y' s
- </script>$ P: s3 n' h: V' F$ G
- <!--脚本结束-->
& K: ^. _. U8 m3 r$ I - </head>
复制代码 例6:
( F0 q) x1 V; F; h4 R" @$ H- <head> + f" l& P" \! Y: J- f( L- q( d2 w
- <meta http-equiv="refresh" content="2;url='b.html'"> 9 u5 z$ p/ {' h- O, J& r* m1 @
- </head>
复制代码 例7:6 C% L. J2 q3 N/ B
- <script language="javascript" type="text/javascript">
' |% t5 g$ m9 J6 y# S - setTimeout("window.location.href='b.html'", 2000);
0 ~$ i+ u+ l' K! _" V( w) k - //下面两个都可以用9 a3 F7 S: D. f, k+ ~
- //setTimeout("javascript:location.href='b.html'", 2000);3 |% _0 i @' m0 z) \4 F9 x) _2 I
- //setTimeout("window.location='b.html'", 2000);: e. s6 x R v; e
- </script>
复制代码 例8:
9 |- a6 n! Q+ n- k0 t- <span id="totalSecond">2</span>$ ^ s& F) _, b& t
- <script language="javascript" type="text/javascript">
" b* y1 C8 H( q9 y- i5 }5 C+ ^ - var second = document.getElementByIdx_x('totalSecond').innerHTML;- x" n# ?' c! s) O. r1 a
- if(isNaN(second)){
1 S$ ^9 O& y+ B0 O5 i# Y - //……不是数字的处理方法% ~6 o+ S! n8 y: S1 ?
- }else{7 Q% V" m) z6 V1 j+ F( _
- setInterval(function(){
Z/ ?5 g3 ^$ h J1 @7 O( O& g! @ - document.getElementByIdx_x('totalSecond').innerHTML = --second;; {$ F. X# I( Y; Z) O2 T" _0 k
- if (second <= 0) {
9 A1 _2 N% |; D7 Q - window.location = 'b.html';6 t) k* {( @/ \+ K; q& N2 a9 R/ A
- }
0 ]( P0 W7 V( }: x* c) c! U - }, 1000);
0 c9 Z P4 \$ P3 L4 i# N - } ! R6 `7 G7 _: R P& j
- </script>
复制代码 & ~" `& W g2 e& T1 P; q7 U0 N
# |& r0 `9 Q/ X# c
/ o: X' L8 Y3 [( k1 ^+ Y, m- [ |