1,只执行一次的定时器 : v1 t! h6 \; z$ S* A
- <script> $ s3 v% X' C; L$ g* X
- //定时器 异步运行 8 G- _! v+ v6 {
- function hello(){
! a1 o1 z) K: P - alert("hello"); 6 D% ^9 u" V. W- W6 J& u$ j: T
- }
" X" `( @. n8 S3 ^0 y0 y; J - //使用方法名字执行方法
) W4 T8 D& w$ E* U3 r& p$ ^. ?6 n - var t1 = window.setTimeout(hello,1000);
/ b# \; Q* s# p- H$ } - var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法 : P0 E! M3 P2 U
- window.clearTimeout(t1);//去掉定时器 8 \7 g z2 q7 L, K: Q
- </script>
复制代码 2,重复执行的定时器
; j8 u& w+ {: g7 L& D% {- <script> 7 L4 p- A' z( C% M
- function hello(){
% Q2 j* j* Q B6 _1 P; o - alert("hello");
3 \+ ?8 m& P) k5 v - }
+ k5 O( _6 ]# i6 n- I( c - //重复执行某个方法
5 L2 m1 T$ O* G' k# ?) m. {, S* J2 p - var t1 = window.setInterval(hello,1000);
& w' z0 a2 W4 Q( L& y - var t2 = window.setInterval("hello()",3000); % U' S+ q2 H; {6 v; }. o$ U8 H8 p/ z
- //去掉定时器的方法 " Q' b1 C4 t7 W- r6 p/ k! W
- window.clearInterval(t1);
: {, K3 B8 n0 e9 p2 X - </script>
复制代码 备注: ( h' T/ I2 e0 J& ?( g
% a; \ U3 x# U2 B# s" i$ Z* O9 Q+ f
如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决: e1 |( ~. x: t: W. @
可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。
~1 s+ L5 U' _8 z8 J; h/ ]: Y0 d2 d: W' N7 _) H
在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);
4 U6 |0 g V6 \5 A2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成+ H& ?, b7 L1 `
“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。2 d z: r f- ?) [ G' P8 A
倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。
! T2 S# i4 Z0 ^5 k0 e) Q" a. \7 Z3 s5 s比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,3 Y- _1 O0 {; T
则需要用到循环定时器“setInterval("function();",delaytime)” 。 获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。; o3 w! M( l5 v% Q& }& f
比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。 定时器: 用以指定在一段特定的时间后执行某段程序。 JS中定时执行,setTimeout和setInterval的区别,以及l解除方法 setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。
/ z9 M4 z2 F( R$ |2 gsetTimeout("function",time) 设置一个超时对象 setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.- m% p) p- P1 {9 a; h
setInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复。 clearTimeout(对象) 清除已设置的setTimeout对象
. p. `( Y6 A/ j% YclearInterval(对象) 清除已设置的setInterval对象 略举两例。
- k) O3 V4 ^* L0 U- O6 F% y9 } d例1.表单触发或加载时,逐字输出字符串 ^" y5 }+ M I1 ?! {2 L7 y; R
- <html>
3 b G; r& g0 Y - <head>
: t, c- h& r' t1 V - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />7 U1 Z6 b! `+ E8 o% m- {
- <title>无标题文档</title>) U9 A4 K4 w4 k
- <script language="JavaScript" type="text/javascript">
5 u+ h" f* {8 h V% M- x& J+ Y3 N - var str = "这个是测试用的范例文字";
+ V; {, ^, w2 x0 D0 ^! { - var seq = 0;6 l5 V5 D3 `2 Q8 }3 n# Y
- var second=1000; //间隔时间1秒钟) n' N* o3 t% b7 m/ l k
- function scroll() {* }7 K( r3 f# o* Q
- msg = str.substring(0, seq+1);
; W1 W4 G" _5 \# D - document.getElementByIdx_x_x('word').innerHTML = msg;7 n! F6 F. Q. x) t7 ~
- seq++;
, V. ^* H4 Q q1 k( \& s - if (seq >= str.length) seq = 0;* k0 ]7 M# S' F: }5 V* p5 g1 C
- }
5 N6 q5 N" {0 n9 ?4 s8 V0 D) Y - </script>
# o7 ?$ h9 p- u/ \. k/ J+ J0 L) u - </head>- i" Y2 A a1 L% Z) j- w
- <body onload="setInterval('scroll()',second)">
! Q% |( L9 S: U% ]0 a2 l5 p3 g - <div id="word"></div><br/><br/>9 h' e0 E; G$ s9 N0 q- o; J) W# k
- </body>3 N V( R3 A+ @$ f8 k
- </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。
8 W' Z! I/ i- _7 A- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">. }/ i. M# D1 X
- <html xmlns="http://www.w3.org/1999/xhtml">
4 S, {! j% X' h* X - <head>3 ]( D# T1 G, ~0 W& Q
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
! U5 R( b) l6 ^2 E m - <title>无标题文档</title>
* v; [1 D/ c6 j# ?9 M' g5 F$ Y2 B- M - <script language="JavaScript" type="text/javascript">" |; e; k9 ?* u
- var second=5000; //间隔时间5秒钟
# W3 E6 w2 U. ~' F/ D - var c=0;
V- b# `. p0 Y; B* Z( D+ S' H - function scroll() {: ~& l8 `) ?& y7 F3 O7 [" s
- c++;! N. j+ m% d& h
- if ("b" == document.activeElement.id) {& |- W" p. ]% d7 A
- var str="定时检查第<b> "+c+" </b>次<br/>";4 o3 M' }% W% q6 M2 N& u
- if(document.getElementByIdx_x_x('b').value!=""){5 P7 |' q5 a4 [/ e
- str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";
1 l1 x8 ]& u$ c' C8 d - }
; F: K! {% p3 O6 b - document.getElementByIdx_x_x('word').innerHTML = str;
! r/ V; L/ {' r) Z/ v- {+ z# w - }
, |; s9 x( i: ] - }. ]) w; l- I# _. u; a
- </script>
2 f& {5 L# w: v+ Y2 s - </head>
, x" Q! }+ z3 N+ `$ ], j4 P y: z - <body>
0 L% p/ |- y9 {5 R2 R5 n4 f" @ - <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>
9 y& d' {4 x' v0 ^' R0 v9 i - <div id="word"></div><br/><br/>; ^$ ~, d3 p3 v7 w6 N, k
- </body>
% v6 W) f3 A# `; k - </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。* W! W! j3 _8 l9 G) m( N
- <html xmlns="http://www.w3.org/1999/xhtml">5 \" W% Y% d; ~* c0 |. X$ p& l( E4 N
- <head>
; \5 K- W5 x& D6 g) C5 ]( ^ - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
! s/ [* m7 f. Z! P6 N - <script language="javascript">
) Y$ X: o l) B$ G, ^0 v - function count() {3 S" ^' u6 Y$ p$ @3 v' a& t
- document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";8 _. G( v0 K4 b) |) T3 g3 n/ d
- setTimeout("alert('十秒钟到!')",10000)$ b% X; G. s" k) r; u% x
- }" g3 g8 j9 T1 @( o
- </script>0 A! I3 L- p% b
- <body>
+ A H3 R$ h6 F* v - <div id="m"></div>
+ g% ]+ E) O) | - <input TYPE="button" value=" 计时开始" onclick="count()">
0 N$ v1 R% S+ a% ` - </body>& I5 ^2 `8 J' D/ ]
- </html>
复制代码 例4:倒计时定时跳转
. q5 M: P) ^2 S- <html>( H/ G8 `! b3 z+ y) R$ n! B
- <head>8 x* i- I# j* _% a& {6 l C
- <base href="<%=basePath%>">4 m& H% }) B- @# f! h O) l( \; O
- <title>My JSP 'ds04.jsp' starting page</title>
I1 c$ u; ]! _! K9 }8 ?; E1 L - <span id="tiao">3</span>- J' Y/ ?: N3 F. W
- <a href="javascript:countDown"> </a>秒后自动跳转……
- j5 E; N% w( h7 {/ x: W1 [& x. f9 | - <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>
, P S# L! a* j/ H+ G6 W, U0 z - <!--脚本开始-->" [) k/ r+ S! l% U5 q7 R1 q
- <script language="javascript" type="">
: \3 K/ _0 a: S( C - function countDown(secs){
2 j; l! `1 r5 D# u( e$ x; o# @7 ] - tiao.innerText=secs;0 z4 e4 m; k9 l. h
- if(--secs>0) b+ ~# `1 Q$ C+ E
- setTimeout("countDown("+secs+")",1000);0 X- g0 H- ~$ n# N, e; r! R. X( I
- }
p2 D( T; k# j5 K' O) ~2 I - countDown(3);8 `5 }/ M- N. _& x: P" a: m
- </script>
; ?) s" n: t$ r' w7 b - <!--脚本结束-->
: E# p0 y# ]$ X2 l' i3 O! ^ - </head>
复制代码 例6:) F+ \( I4 v; _
- <head>
' f; ^5 f0 k/ ?' t5 K4 R+ A - <meta http-equiv="refresh" content="2;url='b.html'"> - A* k2 a/ r1 R- Y: a
- </head>
复制代码 例7:+ \# `% O/ X$ c1 o- e7 P L
- <script language="javascript" type="text/javascript">3 F& `. g& w \
- setTimeout("window.location.href='b.html'", 2000);+ J. ^4 n4 L+ B6 V! P- f
- //下面两个都可以用/ O1 \) X. j, Y8 L5 g
- //setTimeout("javascript:location.href='b.html'", 2000);
2 s2 u9 x b% ?3 \7 l - //setTimeout("window.location='b.html'", 2000);6 t( c2 y, r" Y
- </script>
复制代码 例8:1 n3 W$ y5 a& ^) Q2 M G% o
- <span id="totalSecond">2</span>, J7 w ]- n- S/ N$ C7 F- x
- <script language="javascript" type="text/javascript">7 R1 h" ?. z2 S' b. V+ @
- var second = document.getElementByIdx_x('totalSecond').innerHTML;8 ~. Z' M+ \! B2 @0 W
- if(isNaN(second)){
! O+ {9 F: A& I( m/ c; [6 [ - //……不是数字的处理方法
9 o% u% p3 v- [. B$ N) E - }else{
_* v) M5 U2 [; T- A0 d( L) Z - setInterval(function(){2 w# o7 g$ C. G
- document.getElementByIdx_x('totalSecond').innerHTML = --second;+ x5 _4 v/ H- O8 G& ^
- if (second <= 0) {
" N" f5 V0 E- E7 X - window.location = 'b.html';/ `7 g, c8 v L' y% I3 p5 N
- }5 Z4 O# T8 c+ |. I: |
- }, 1000);
& F% O/ {5 a* h - } * t7 C/ I8 g' v5 c' \- o
- </script>
复制代码 # P" G2 M3 B, u' L' |
& t" w5 s7 m: K# i. X* U5 o) {! V8 X- E( D4 G {6 H( g1 T
|