1,只执行一次的定时器
% u$ f7 D( k4 |4 s5 D& o# ]6 N- <script> 2 Y4 l+ k" n9 L
- //定时器 异步运行
, n8 t6 q1 q1 h# B7 q* _ - function hello(){ 4 H. I" p7 ?1 C$ m- d ^
- alert("hello");
! h( r$ V- B- `/ v2 ?3 O" K @ - }
) d4 ^ {& i% S4 N5 r - //使用方法名字执行方法 + e4 \% _, p+ _9 x! F3 d" Q/ q% B
- var t1 = window.setTimeout(hello,1000);
4 q4 P" ]+ w3 O' n, m/ E( I; c - var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法 ! B) G; r' C- a; E
- window.clearTimeout(t1);//去掉定时器
- j* O4 [8 R j( N( k. F$ F# Z/ o - </script>
复制代码 2,重复执行的定时器
% L1 r& A! \: v3 d- Z: K6 t- <script> ) {2 ]" x, ?- B: R+ c5 h0 Z5 v
- function hello(){
5 S, V" F; R. g0 s. E& P5 }/ O( x& h - alert("hello"); 4 o+ @) V( i( V& c; W1 d6 X
- } 7 I4 N8 y% Y9 n! b
- //重复执行某个方法 ) y7 {0 R: v: V: F& u" C
- var t1 = window.setInterval(hello,1000); - H4 O3 H" }% E# p8 m
- var t2 = window.setInterval("hello()",3000);
( F' \8 G4 W! s3 I# W0 p - //去掉定时器的方法
# W$ ^5 @, i8 @ - window.clearInterval(t1);
8 v5 \4 V, O2 C: ?1 |* [. k - </script>
复制代码 备注:
7 f' b/ O: c5 C6 w- o2 @$ B( [- w0 Z
如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决:
. q& o# K u% U可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。
! G6 I) a, D) M9 A3 f/ k0 t* r0 q% \0 S: s
在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);
4 [; h5 Q" U4 {3 K5 V+ c5 Y/ q6 T2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成
4 @: I# W4 z4 @2 B7 g“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。& v( B0 O+ p) {. n' H. H9 C. ^
倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。6 v( [# b- r+ O7 d" |
比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,
% [/ t T0 P3 w" N" w8 y则需要用到循环定时器“setInterval("function();",delaytime)” 。 获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。
* ?' ~& y1 ?8 r, {' L2 p* ]比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。 定时器: 用以指定在一段特定的时间后执行某段程序。 JS中定时执行,setTimeout和setInterval的区别,以及l解除方法 setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。' X/ Y3 d" n ]" z# w2 @3 e
setTimeout("function",time) 设置一个超时对象 setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.# v# C5 D0 E$ t% A# }
setInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复。 clearTimeout(对象) 清除已设置的setTimeout对象' ~" D5 ~. R7 v+ p
clearInterval(对象) 清除已设置的setInterval对象 略举两例。 C$ E) C _, s6 ?: }2 G+ w
例1.表单触发或加载时,逐字输出字符串 5 a7 N1 g) c! R& ~9 K1 S. c) {
- <html>- @; ^* Q% X4 }* R& ]
- <head>
0 q- M. L8 W, `1 t. `/ H( \* r$ C% C; {8 O - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />! n6 x8 Z3 V2 }4 k4 j: u
- <title>无标题文档</title>3 P+ S4 ~- M4 r
- <script language="JavaScript" type="text/javascript">, n; c2 _) U% N. G7 n$ f E! ^; C
- var str = "这个是测试用的范例文字";. j6 k/ p, h+ s' l
- var seq = 0;
5 l- N0 \8 x5 @% J - var second=1000; //间隔时间1秒钟( C; p+ s& y! T1 f! b' l1 X v# p. B
- function scroll() {
- ?2 \( w9 d' i2 W! E+ c - msg = str.substring(0, seq+1);" _8 n& \! e& O' U( `
- document.getElementByIdx_x_x('word').innerHTML = msg;# Q6 L+ e- Y; G% _: l
- seq++;. F8 i+ Z5 f- b/ Q0 O4 ~% `) ?
- if (seq >= str.length) seq = 0;# b, L1 _1 h" F8 ?% L
- }/ {, S' |2 Q8 C1 U" m
- </script>& V# ] s v: K
- </head>
& _% t& J& x' a, _) | - <body onload="setInterval('scroll()',second)">) ]5 r& h$ g5 ^* Z* ^
- <div id="word"></div><br/><br/>
, e' O! ]6 M% t5 v+ y6 U - </body>
3 N p- F1 {, I9 \3 ~* g - </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。
, Q" n' P% i9 W& a! ^4 t8 I6 w- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
) p- s2 q( ^$ o6 Y) T$ E# b - <html xmlns="http://www.w3.org/1999/xhtml">
+ C0 }6 n# D3 g6 `$ A$ Y( A. K - <head>! R9 |/ J; |3 z) a$ ~+ o5 D* a* X
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> t6 `* R' D B: t4 J6 ^
- <title>无标题文档</title>' G# Y/ ?( D# i/ s! t' b
- <script language="JavaScript" type="text/javascript">
" x1 g& l4 I6 m - var second=5000; //间隔时间5秒钟- @" K' f% S% x
- var c=0;4 a4 V% v2 F( I9 n6 g
- function scroll() {7 U/ {- `- r0 n- j q- N; q7 X8 f
- c++;
" W+ {3 U/ \/ x0 v! {6 H$ I4 Q - if ("b" == document.activeElement.id) {
4 ~: m4 }# {( u4 M% x' g - var str="定时检查第<b> "+c+" </b>次<br/>";
& `- w9 Y1 ~" i$ O2 H - if(document.getElementByIdx_x_x('b').value!=""){
# M; H5 G2 S9 v( R( {; ^6 Q3 B: d - str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";
8 A$ Z$ C; c$ Z: h - }+ ~$ [. c* @) O/ p& f. P& d
- document.getElementByIdx_x_x('word').innerHTML = str;% N- K" H, u0 i/ ^9 J
- }! @+ l+ f8 x) b' K! A
- }4 X+ r, N& T! f {3 [
- </script>. Y3 \! W2 c F0 M9 p
- </head>+ b K$ J# d5 s
- <body>
% X$ O5 u1 I0 @" v - <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>
% A$ d3 [) I2 S4 ?! S - <div id="word"></div><br/><br/>
6 [1 l& n0 p, J& |2 c - </body>
* E( n" v, l" ^, b4 F e* t1 r- b+ ?) } - </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。
O( U! ]8 ]* D9 E+ p2 q: @- <html xmlns="http://www.w3.org/1999/xhtml">
! h$ w: [0 W+ ?2 z, h5 q - <head>
$ X+ ?7 D+ }$ H6 r0 w - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />) A6 F8 W- e- P. a$ ]1 |
- <script language="javascript">
3 y5 j) s$ @) J! ? - function count() {
: c) M1 K4 q; b/ y, }+ U - document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";* v8 t h- T1 l+ |/ j" S
- setTimeout("alert('十秒钟到!')",10000)# L( e/ E' J6 p
- }
* ]% d3 e' d% |% M - </script>
% F+ p5 U" C0 `( o: J4 J - <body>
! P" ~/ ]2 `/ A9 O( K$ }5 x - <div id="m"></div>
; I) m% Q! |* U* Q - <input TYPE="button" value=" 计时开始" onclick="count()">8 Z. v- k* u; l- z7 |: L' K
- </body>
9 Q8 Y7 M! K- h% A - </html>
复制代码 例4:倒计时定时跳转
' [5 a3 e3 M0 `& E0 {, ]2 s n$ v- <html>
! o& i" t5 i- j+ L8 I& p& I Y) f - <head>( C1 T+ ^) g1 S4 t
- <base href="<%=basePath%>">
5 }! L. a6 ^2 Y, n - <title>My JSP 'ds04.jsp' starting page</title>9 [# n J7 f8 o( z. w @
- <span id="tiao">3</span>
' T" f; }! l. E0 J - <a href="javascript:countDown"> </a>秒后自动跳转……
7 c) }+ V* N; a" r2 M - <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>; E2 ^3 V) [& \: i- j( _/ F
- <!--脚本开始-->
) w, M$ K$ w# q9 Z0 {5 o - <script language="javascript" type="">1 O! v3 C; Y3 q9 `7 |8 Z; L0 H
- function countDown(secs){6 e% l1 U3 m! {2 I, {& n( r/ ^. L
- tiao.innerText=secs;% y5 x# J5 N: O* |' U. w
- if(--secs>0)
) I( g/ o3 U2 Z3 i - setTimeout("countDown("+secs+")",1000);" i# h7 k: x6 \. M
- }3 O0 u; i0 c1 D$ z+ T/ P8 R7 N
- countDown(3);/ \$ C. t, s" M6 ]0 w& {0 I& Y9 p
- </script>
8 C0 o) M% B) P' ]0 z( n8 c - <!--脚本结束-->
8 W9 K% J) k' T. G1 ]1 [( p1 i - </head>
复制代码 例6:: a1 o! W3 c( ~
- <head>
+ i3 V$ T+ R; b7 |' }' Q# \7 q - <meta http-equiv="refresh" content="2;url='b.html'"> ; M& F- S- h) |9 j
- </head>
复制代码 例7:& _ B( F! x. w/ O }3 Q
- <script language="javascript" type="text/javascript">: W" X5 }. ]6 H- Q9 ~$ F7 ?
- setTimeout("window.location.href='b.html'", 2000);0 g" [ E! \% Y9 d# [ ~7 ~
- //下面两个都可以用
" Z+ b( x% X- S0 y x T# X# ~! E - //setTimeout("javascript:location.href='b.html'", 2000);
0 B" Q& \2 m5 ~/ ?1 v& W' ~ - //setTimeout("window.location='b.html'", 2000);4 v/ O' w6 b, r
- </script>
复制代码 例8:
9 j) w: E- w% t2 o- <span id="totalSecond">2</span>
( D: O. M) W" q: w: l - <script language="javascript" type="text/javascript">! Y. F1 ?* T, C9 Z9 W8 I! v6 Z
- var second = document.getElementByIdx_x('totalSecond').innerHTML;
; \. l+ c1 ?" p( _2 |7 v! x8 M2 d - if(isNaN(second)){
[/ `& Y7 V* b9 }6 u2 X - //……不是数字的处理方法0 e6 N1 H6 ~# J7 H' ]
- }else{
+ O" D6 w& D0 k) T# \9 F - setInterval(function(){/ ]+ P+ P0 P; L9 c1 a# _
- document.getElementByIdx_x('totalSecond').innerHTML = --second;4 U( N$ `2 h- k1 W
- if (second <= 0) {( ]& M3 ^, ?' `9 \5 G
- window.location = 'b.html';6 h( g/ w: t" ^1 v
- } B" w7 `. d5 o3 g3 X# m
- }, 1000);
! R- G+ Z3 O: H& ]& l" C - } ( ~' H# J. p) y* }7 p) a/ _
- </script>
复制代码 6 D8 l7 j4 o, B" f+ B% F
. o- O. p( R1 B) P
* Q( @: _9 C) e |