1,只执行一次的定时器
7 h0 b5 A& w' H4 S. n5 f- u; P. z- <script> - B# @9 I3 D7 |
- //定时器 异步运行
2 ^+ S) w i" Z- W" E - function hello(){ 4 n; K# u2 f( d3 @' w2 {3 w7 w/ I2 d' Q
- alert("hello"); % t& @% @" A9 `- `* B9 |, e* c+ N
- }
2 g& q! Z' B% A* F1 e- y7 G, x - //使用方法名字执行方法
- v3 G9 a9 A; P - var t1 = window.setTimeout(hello,1000); : w. k( z6 O+ D, } m6 G
- var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法
3 _2 x/ w1 |' u - window.clearTimeout(t1);//去掉定时器 8 d$ m! [9 b' O, z
- </script>
复制代码 2,重复执行的定时器 ! t& A2 R# W8 Y2 K. n7 x
- <script>
( s4 F! x+ m3 t% L2 W- ` - function hello(){ 4 e7 \) w( e4 R$ Z
- alert("hello"); 6 \3 J. T2 H# \4 Z; e
- } % ^% C* A) l. h9 Q" R* w: `
- //重复执行某个方法 ! O% I9 ^/ {) |/ J7 s' ~& G1 e4 _8 ]
- var t1 = window.setInterval(hello,1000);
3 U$ [+ t8 O. a. l+ r - var t2 = window.setInterval("hello()",3000); 8 [$ Y. p% l4 d& C! U8 i- j
- //去掉定时器的方法 & z4 r9 e8 }' Y: s2 Y7 o
- window.clearInterval(t1);
" D. U0 t i, C4 k- w3 }6 v - </script>
复制代码 备注: ; X& ] B8 Z% \* I& x6 G4 L8 m
( C: o/ z! I, l5 `+ M! W- J3 I2 ]
如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决:
6 O2 v1 r, G3 C+ d2 B可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。
; G4 T8 A$ m7 \0 H9 R1 P$ o( h( Z% ~$ U: L: M2 Y. l
在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);. K" X: E5 v' j3 U+ ^
2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成
: w& V, B6 a9 r6 r" {“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。( O5 e3 l" e- a; q, D7 v% D
倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。
9 O b/ t7 a4 h9 z0 F比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,
) ^6 T/ @$ ^( T0 c7 E7 `- z- U则需要用到循环定时器“setInterval("function();",delaytime)” 。 获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。1 y2 _! R7 x' g5 u' W6 H& L2 R
比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。 定时器: 用以指定在一段特定的时间后执行某段程序。 JS中定时执行,setTimeout和setInterval的区别,以及l解除方法 setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。
4 i: H s$ ]( [. QsetTimeout("function",time) 设置一个超时对象 setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.
; s$ i- B) D( F3 B7 t, j9 u; RsetInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复。 clearTimeout(对象) 清除已设置的setTimeout对象
7 S6 O. P% J3 X' c& F( X$ ?clearInterval(对象) 清除已设置的setInterval对象 略举两例。
1 [6 y$ t' G+ e; @ d% q) o例1.表单触发或加载时,逐字输出字符串
/ O& L% V, J. C' e: J8 Q+ E- <html>
7 J& J& Z6 x/ p: s - <head>
2 E& ^1 t; P5 E8 c2 J - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
! X4 X6 q+ H2 N4 G0 U - <title>无标题文档</title>
9 y( [: \: S1 e6 K& Y9 @$ j - <script language="JavaScript" type="text/javascript">
+ q) M& g8 b, `! V$ T* w% d - var str = "这个是测试用的范例文字"; U) m# C3 P5 [
- var seq = 0;# ?4 F) i& ]8 j" m, z
- var second=1000; //间隔时间1秒钟
0 U2 Q( w4 L* n# e" @1 \* p, I - function scroll() {1 r2 g3 H1 P1 ?& w& G# v9 R
- msg = str.substring(0, seq+1);) ~/ Q! S2 a. Q, A9 V1 J
- document.getElementByIdx_x_x('word').innerHTML = msg;/ O: b) d L7 w: j
- seq++;
/ ~4 C' e( D( E0 ~ - if (seq >= str.length) seq = 0;% q4 X" r. V& r# f
- }
, @2 [4 s% y1 M$ A3 M - </script>& X- F6 `8 f8 E, R6 X, `
- </head>- O4 W1 w1 o/ T# C& Y0 Q5 t* U1 w
- <body onload="setInterval('scroll()',second)">
% ^ O5 _' F' ~8 T# G. l* L% J! s - <div id="word"></div><br/><br/>/ u+ d/ v4 Y, ?$ a
- </body>
5 t1 k+ S+ V! P, v0 H4 Q# u4 | - </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。6 ?5 F5 }5 m. [ @* ~* ^
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> s" l; W6 e+ \: q7 L! [
- <html xmlns="http://www.w3.org/1999/xhtml">
/ C k0 s1 t3 ~: U3 } - <head>
# u! V! o) M) t+ G% O - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
4 G H; J6 D' g - <title>无标题文档</title>
5 z" n7 _! v% I# B" p - <script language="JavaScript" type="text/javascript">6 b4 T; K# ^% K: Y4 A% p, j
- var second=5000; //间隔时间5秒钟2 Q- u5 B, O9 x4 s, b/ q
- var c=0;
8 h9 D3 H; P: n# N: [ - function scroll() {
' l$ L5 W- ?2 O) o z - c++;4 n4 C1 N% X/ C$ ]9 h ^
- if ("b" == document.activeElement.id) {4 z8 J* F4 i% g
- var str="定时检查第<b> "+c+" </b>次<br/>";, q5 d& ~1 R7 B" R5 l4 d& X; P
- if(document.getElementByIdx_x_x('b').value!=""){+ ?, f5 U8 d" x9 f
- str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";4 I3 p$ ~( Z( O" j" a% ]9 F3 }
- }
1 z3 G% v3 q7 j- V - document.getElementByIdx_x_x('word').innerHTML = str;
' _1 ^# N( H/ p/ x: _' F: F& w - }3 U- b+ E4 A8 }) i e) M1 x
- }) e1 m8 c$ {+ W* i8 R4 ~3 k
- </script>
. Y1 F( Y1 ?3 _8 j/ H. C - </head>4 J- a& v/ T$ {9 z" R& [2 C; R% W2 e
- <body>
+ Q$ G. U7 I: C/ a* x, q! I - <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>
Z7 n( U+ y( P# w- X - <div id="word"></div><br/><br/>) ?% g5 L D& X5 T3 |% S# B$ \
- </body>
a3 c% B" N# }8 G! N" @ - </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。& T1 @' h C% n; m" Y3 j
- <html xmlns="http://www.w3.org/1999/xhtml">4 |" E* w d$ \( U9 m/ P) ?+ G2 P
- <head>) p- M3 L& v7 o
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />3 H% C/ m7 s0 ?( ], }8 `' y$ o( ?
- <script language="javascript">7 E$ n9 C4 l c) s
- function count() {# c/ E* `7 z/ K6 P1 s
- document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";" b# z Q$ W1 ?2 ]) o0 O
- setTimeout("alert('十秒钟到!')",10000)# r Y _* X+ ?4 j; r
- }
9 H2 S3 e9 d/ T; J$ ~! ?- H - </script>/ ~' b7 K- ^+ @6 v% k* ?' z+ Y U- [
- <body>4 W& P6 i( I; ^, N: v2 ~/ j3 Z" H
- <div id="m"></div>4 d- u6 M) J$ _
- <input TYPE="button" value=" 计时开始" onclick="count()">( W' n& ~: z3 Q2 H
- </body>
: t: \4 ]1 s; g, s* w- } - </html>
复制代码 例4:倒计时定时跳转. g% e! c3 n! D! G, g4 T: H# M
- <html>4 R3 ]# {) G: `8 \. m: V- e( n" Y
- <head>2 g L1 v7 b# i H
- <base href="<%=basePath%>">
4 V% `3 r1 O0 \1 V. Q$ A: r - <title>My JSP 'ds04.jsp' starting page</title>$ ~) ]. v2 c: m& _
- <span id="tiao">3</span>
: p. p+ i! r% I' P5 W% p8 U1 K6 [ - <a href="javascript:countDown"> </a>秒后自动跳转……
% p; S1 d5 Y/ `1 N; V - <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>
, k4 j, V; g) Z: W' w, P$ M5 A - <!--脚本开始-->
e; m8 i. N6 u5 D# ^" \. { - <script language="javascript" type="">6 D1 k* }: z0 L; b8 {! I
- function countDown(secs){$ E% V: ~( ^! W( X n4 R
- tiao.innerText=secs;
- w5 V& v4 s7 {7 P0 O! C - if(--secs>0). \3 l# l& V4 W- x/ K# w
- setTimeout("countDown("+secs+")",1000); T" a+ u* T( a
- }
" ]2 v( _$ ^: ]# f- h5 u - countDown(3);
; |* c$ e$ i! M: h% `* ^ - </script>
: g, c; f$ U6 X) z: t. |( d - <!--脚本结束-->" F0 p+ \( M" e: u; c
- </head>
复制代码 例6:
/ j6 m0 I' [3 s7 g5 }- <head>
0 I$ I2 n h5 j - <meta http-equiv="refresh" content="2;url='b.html'"> , H [% ]: j5 K" k; G
- </head>
复制代码 例7:; G6 w& X( b& C3 x
- <script language="javascript" type="text/javascript">
: I3 `! v* w5 o8 y& p. ]7 \ - setTimeout("window.location.href='b.html'", 2000);; U! \/ N4 k8 T% v# \
- //下面两个都可以用
- @% w* W6 S0 L3 V3 S4 u - //setTimeout("javascript:location.href='b.html'", 2000);
, b6 z+ D: O- Z' J - //setTimeout("window.location='b.html'", 2000);8 _( ^& U; m' v3 z
- </script>
复制代码 例8: t7 F- V* J9 i5 W
- <span id="totalSecond">2</span>
. B! P+ S/ p0 M - <script language="javascript" type="text/javascript">+ j. U6 u a* F+ Z6 ?1 n, a2 U
- var second = document.getElementByIdx_x('totalSecond').innerHTML;
3 s( g2 r) A# \/ B! J5 B" C/ s" ] - if(isNaN(second)){
! q4 F+ W( F6 h! G - //……不是数字的处理方法
. p( y: z+ b! v3 l! u' J* k% _ - }else{# c1 m: ]% h; j; h) A# A. q! J+ D
- setInterval(function(){. e! \2 [2 g$ |+ } B9 j* w* U
- document.getElementByIdx_x('totalSecond').innerHTML = --second;2 [+ I2 E5 L: ~$ Y& l6 l# l7 d
- if (second <= 0) {
& c# s3 p" G" r - window.location = 'b.html';6 n$ H/ D$ p5 g! Q& T& W3 z" B
- }" r5 p3 A( M9 |/ O! N) ^
- }, 1000);
- |6 J' q; V* J7 h1 r( z - } 7 d. [4 c2 z- E5 e! F2 [* Y v
- </script>
复制代码
" P# y# y- W! a0 Y6 f
3 `' X+ Q j* G: | S
1 H% B( b H& ]$ Y |