1,只执行一次的定时器
/ h, J& T7 [$ X5 k& d7 q# p ? {1 o- <script> ! T0 S$ e+ O3 `4 A+ \ [9 N
- //定时器 异步运行
2 i# {2 Q$ x# Y7 H - function hello(){ * s' j/ D3 N; R
- alert("hello");
9 L; M5 T& D5 N$ [4 m9 N - }
* @4 {" H7 o; D) q2 A7 w - //使用方法名字执行方法
" _, e- E# z3 V H* F5 i3 n0 S - var t1 = window.setTimeout(hello,1000); * n4 {& L% S2 h8 T: x
- var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法 8 o: l# } U* a* f) O4 i/ J8 E/ Q
- window.clearTimeout(t1);//去掉定时器 . i# Z0 T8 @. Z4 f8 E8 `" J O0 p
- </script>
复制代码 2,重复执行的定时器 4 F& o! H v* u( J% @
- <script>
$ \+ I/ @. `3 ?7 q' i ~8 [ - function hello(){ 9 I* K& L1 e8 r+ e* k
- alert("hello"); % h" O& J4 c9 j) r" s, c* I8 P
- }
) L' F, \/ t/ V2 Y - //重复执行某个方法
) c. f8 a. k* X3 a# s - var t1 = window.setInterval(hello,1000);
5 {7 g. D9 j4 x- s" g - var t2 = window.setInterval("hello()",3000);
. b4 S( l6 o- P! x5 j6 S8 v - //去掉定时器的方法 Z- |# P! G- ]3 ~6 n5 `
- window.clearInterval(t1); - l# q" W5 p8 a; r( o, r( W
- </script>
复制代码 备注:
9 N( \' Z5 X1 a" ^" J; f$ V3 ^/ l- S& i6 S! D; }
如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决: 2 D# S# N& t$ `( M
可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。# D& q' _6 B3 X; c8 h$ C
6 S9 W9 K+ Q. h1 t5 b- B
在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);! r9 {/ \" U% Q9 } _
2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成
9 d; i7 J0 d/ }- h# {5 c3 Q5 e“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。- n) q1 m0 G! N" X
倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。
% b x* h+ i! M" S/ I比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,
+ x/ @# O3 h. I1 d则需要用到循环定时器“setInterval("function();",delaytime)” 。 获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。
7 Q* z/ s6 b8 b8 K M0 g$ Y比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。 定时器: 用以指定在一段特定的时间后执行某段程序。 JS中定时执行,setTimeout和setInterval的区别,以及l解除方法 setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。! W. k% l( r4 [$ @/ e
setTimeout("function",time) 设置一个超时对象 setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.
: F: B7 g! j5 j* l. \/ wsetInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复。 clearTimeout(对象) 清除已设置的setTimeout对象1 @0 \" k; p. R% c, T9 g# F9 L
clearInterval(对象) 清除已设置的setInterval对象 略举两例。
! R/ ?; h# Y% ]例1.表单触发或加载时,逐字输出字符串 . n* o! J1 i8 k( K1 `
- <html>& [# s/ p" C1 d) z- M) h
- <head>. Q" f# c& O: ~# r$ r
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
" u! z! C$ t. h2 y - <title>无标题文档</title>& X0 ^3 y6 S$ t* E: G' |
- <script language="JavaScript" type="text/javascript">' M6 c" h' R1 B4 g
- var str = "这个是测试用的范例文字";& V8 k) w: u/ } {5 M3 d
- var seq = 0;
2 y: S1 n! A0 @ - var second=1000; //间隔时间1秒钟% b: f3 V* w- B, N0 M, U# a- u5 G" l
- function scroll() {
5 M, g) D, m' w! L' ] - msg = str.substring(0, seq+1);
P0 ^+ h- z' Y - document.getElementByIdx_x_x('word').innerHTML = msg;) E( C; y6 s3 {: |8 f3 b7 d: \4 P, {
- seq++;1 U8 n7 l4 X I( Q. r8 O5 d7 g
- if (seq >= str.length) seq = 0;6 s, ^0 }% K4 P" ?* @
- }/ S/ Z8 k* ?: S
- </script>6 i% v2 u) t! H, ?2 b% B$ \2 E J
- </head>4 f6 L: G/ u& R) W* h! a ~
- <body onload="setInterval('scroll()',second)">: L. ^' n' J2 k6 K7 ^2 s* u
- <div id="word"></div><br/><br/>* N; O6 {! e7 E/ N' V: Q$ F% N
- </body>
% j" B$ W2 d7 Y. ^) l3 d; ^; W$ F1 l - </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。
+ |' w8 H# z. Y s: C+ W" Y: a- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
$ Z' \) q8 O/ \( V& x& V( E" g - <html xmlns="http://www.w3.org/1999/xhtml">' w, O/ e, j9 j+ M! _& O! K
- <head>/ v; }0 _. o( \6 V5 R! y! G
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
8 h) F2 d. a) w6 k! j' Z s - <title>无标题文档</title>
* x% b8 l+ d, T' L( q. p - <script language="JavaScript" type="text/javascript">8 K$ H* @9 _3 R/ X
- var second=5000; //间隔时间5秒钟
. Y3 e8 Q) o- S4 r' B- \ - var c=0;" e# t% z+ E2 i" r- q0 d
- function scroll() {
# Q# W1 l/ |5 d - c++;) B/ A, o/ u$ ? }$ V) S
- if ("b" == document.activeElement.id) {
' C% H8 F. {& h7 e( `1 \( { - var str="定时检查第<b> "+c+" </b>次<br/>";, F7 }9 k/ |8 l) w% Z, F
- if(document.getElementByIdx_x_x('b').value!=""){3 u# g2 L$ F) \. v1 k
- str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";
: Q9 C* o% u" S9 ^$ M - }
1 q. U* B& y1 _" m. Y - document.getElementByIdx_x_x('word').innerHTML = str;* r3 _7 E" s5 I+ S; R/ ?5 S
- }
" A3 G8 c1 |8 x; b2 P( X - }
$ j8 ]$ C" }6 X- e - </script>* C, N) L" {. M5 Q/ X0 G
- </head>4 D! g$ f" J9 z: n8 M8 l* O
- <body>
2 f F* G- l6 W% x - <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>, V3 x' X7 F7 q, s
- <div id="word"></div><br/><br/>% h. t) Q% J# x# A/ b/ G" ^" h; U
- </body>5 M3 g- E- a- O; y! y, \
- </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。
. u7 D7 l$ h a; H$ W y& j- <html xmlns="http://www.w3.org/1999/xhtml">1 w. ~8 p" m7 l, y6 U
- <head>: X Y+ e1 f# |# Q3 I" y
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />* u& h1 s, J+ _7 y. B1 f: X$ C% X
- <script language="javascript">% B) X. D- D5 `$ ~( `( `5 s5 {2 H
- function count() {3 o2 y4 Y V$ C9 b# x
- document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";9 C. h: \& J( @ U
- setTimeout("alert('十秒钟到!')",10000)
+ k! C9 N! V9 s \5 M - }
0 J; J- a3 T2 W5 \' U( i/ Y5 v. C - </script>( w9 T. c& b& _% l# ^, Q
- <body>/ F9 ? I; m, K8 |
- <div id="m"></div>' j+ ?# L \1 E6 Z6 G, F
- <input TYPE="button" value=" 计时开始" onclick="count()">
3 G5 i! H# D$ S' a' x# p# n( v ] - </body>
2 }% R* b8 \% |" [: X3 W7 U - </html>
复制代码 例4:倒计时定时跳转& ~/ m- L9 t" b' K" S; C( U
- <html>, K7 F; ^# ~; h V. k W6 x. |
- <head>
# y6 X2 q! F4 f+ C, ?- B, M; L - <base href="<%=basePath%>">" }8 q- K& \* W) l8 x! i
- <title>My JSP 'ds04.jsp' starting page</title>( a$ m+ {. O) r4 x0 |8 B
- <span id="tiao">3</span>: ~8 g# G# A4 N1 \, l }: |
- <a href="javascript:countDown"> </a>秒后自动跳转……0 d" ~+ p. _/ q* q0 s. J4 ~
- <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>5 G' D' e) ^7 x; Z& d" N, j
- <!--脚本开始-->9 R' X, N7 F5 _
- <script language="javascript" type="">9 @# p1 D# [4 ~; C
- function countDown(secs){+ v9 W4 @5 ^' Q( H4 M3 i
- tiao.innerText=secs;: l. ?9 m6 {6 u" t, G4 T3 G& Y
- if(--secs>0)
0 K0 O( E: Q- s/ O - setTimeout("countDown("+secs+")",1000);$ o6 G* H; D) I- z8 p
- }
/ z' c9 V! L6 k- m3 @( H - countDown(3);
1 z- X/ c4 V& `: m1 | - </script>! m( I/ ?# X8 z2 ^% G% }- N
- <!--脚本结束-->, ?/ j: b! \& R1 b7 [& H. ~
- </head>
复制代码 例6:
7 \. x9 u# L: s. { K- <head>
7 w- @, x6 X8 n% A1 [4 o - <meta http-equiv="refresh" content="2;url='b.html'"> / n# {& i% M9 e: F# S/ j7 Z
- </head>
复制代码 例7:
7 Z% k" v' `. i8 Q+ c8 U; B- X8 F3 _- <script language="javascript" type="text/javascript">
" X# |2 \# B4 T4 l) b k - setTimeout("window.location.href='b.html'", 2000);
}% C" A' b/ e Y, G% s* v' S6 m I - //下面两个都可以用
1 T% L8 c5 K1 K. n a p - //setTimeout("javascript:location.href='b.html'", 2000);! N9 ?9 D; F& e0 B( \" J; l B
- //setTimeout("window.location='b.html'", 2000);% x+ L0 s, z) V8 j' [" U
- </script>
复制代码 例8:
! `8 }1 T/ T9 Q! ?0 S- <span id="totalSecond">2</span>
; G K0 V& W# c6 O - <script language="javascript" type="text/javascript">
- D& m- G3 b- ~: g8 ?- r! \3 m - var second = document.getElementByIdx_x('totalSecond').innerHTML;
! ]. C; s3 S$ x9 S4 d, Y9 X9 ` - if(isNaN(second)){ x8 Z7 W7 I7 B d) S" m
- //……不是数字的处理方法& v' L9 A* L& F4 P9 K. r. W
- }else{
4 c8 N) O4 Y. u {; ? - setInterval(function(){
$ _( p# s" H- o2 u4 c - document.getElementByIdx_x('totalSecond').innerHTML = --second;
: L+ R8 Y8 u& q5 W3 x% D8 t - if (second <= 0) {2 m5 _% p" M8 j M
- window.location = 'b.html';
; v) x6 k9 H: F - }" U; Q: {! k& N! B. s
- }, 1000);
9 P* c0 z* L X- I1 r" v - }
9 {2 D2 C( r# a5 V9 ` - </script>
复制代码
1 m6 G$ ]* e" Q( \
) f) f$ t1 l' o1 I# P+ r/ O9 B
5 b1 i' _; e* p& h+ T |