1,只执行一次的定时器
0 ^+ a! E$ f( i. o- m- <script> 1 w8 e+ y; \. Z9 o
- //定时器 异步运行
% z$ M! h; ^+ Y - function hello(){ ) g7 t. m1 s4 z+ F/ K' }8 J
- alert("hello"); 5 w' V: f- \/ g
- }
, k" n- O5 H/ j# `4 D - //使用方法名字执行方法
6 f, d2 c' U0 X/ W: i3 ~3 p4 ` - var t1 = window.setTimeout(hello,1000);
6 n9 ^& q/ Y9 I1 |2 p. G - var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法 6 q* j1 K* N2 T c X' b
- window.clearTimeout(t1);//去掉定时器
2 C+ f. w' X g" W - </script>
复制代码 2,重复执行的定时器
" n: n m$ V4 d% A X- <script> 7 g1 M) d: h, }0 r
- function hello(){ / r1 M3 ^7 |" G! v" \( v
- alert("hello"); . i9 O# r/ ?3 q6 G# i/ {3 ?
- } + b! k8 C! Q, \, y4 K0 Y
- //重复执行某个方法
3 j. _, U& ]% T3 Z - var t1 = window.setInterval(hello,1000);
4 ?+ A0 U6 z: ?3 m# j - var t2 = window.setInterval("hello()",3000); ' \5 |3 Y2 j" ~& a! B- U' U
- //去掉定时器的方法 9 J: D0 v J" z/ v5 {. G
- window.clearInterval(t1);
! e( X: |8 F8 n) ? q1 k: A - </script>
复制代码 备注:
- ~ k+ _! j+ r$ O3 f4 h" H; |3 M: G, B, _3 `* f0 r' f9 S
如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决: g- w1 m7 \" d7 g9 P
可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。6 I/ o! M; s9 S7 q. U r
* d$ d( `7 [" l: T& L. `在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);
7 e# s* W9 x' O9 F8 ~+ m* v2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成, E4 P4 O1 K- Y3 K/ n
“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。
. g; z- c. C+ p4 e6 t' M& N. ~4 R 倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。: g, ^8 u. t% M) W
比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,- l2 U" O4 ~9 z7 A5 u1 B2 D7 j: k
则需要用到循环定时器“setInterval("function();",delaytime)” 。 获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。
+ Q! A7 V6 r) ]比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。 定时器: 用以指定在一段特定的时间后执行某段程序。 JS中定时执行,setTimeout和setInterval的区别,以及l解除方法 setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。
# H7 {( _3 z2 usetTimeout("function",time) 设置一个超时对象 setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.; i- ]( s! _8 m1 F/ E" r
setInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复。 clearTimeout(对象) 清除已设置的setTimeout对象
) Z; A: A7 g# L9 U! f) Z" u: @clearInterval(对象) 清除已设置的setInterval对象 略举两例。: N* F! s+ g E$ o: R
例1.表单触发或加载时,逐字输出字符串
+ `! K6 l+ h/ t. _- <html>* J% H" ~, g O, d- ?% P V
- <head>3 H1 {& k' g: D9 o# t
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
3 [ Z$ D6 _# K/ \ - <title>无标题文档</title>
- |) ]+ t t2 j, a" ~; L& S% n& ] - <script language="JavaScript" type="text/javascript">
* }1 z7 y% J2 k! ~0 D, M - var str = "这个是测试用的范例文字";
: s( L/ I% e* l, u( ?. I# C - var seq = 0;& M; s8 L% F5 j% C
- var second=1000; //间隔时间1秒钟) S3 o5 U! Z9 d7 H/ U# {
- function scroll() {2 W/ w4 _* O5 o2 ^+ I
- msg = str.substring(0, seq+1);* b |; w( a# \" G
- document.getElementByIdx_x_x('word').innerHTML = msg;6 J$ i5 v7 S+ ^# A3 _
- seq++;; X$ _5 X3 E e F
- if (seq >= str.length) seq = 0;
! Z, ?8 P# P& J3 M - }( `+ d) W2 e l7 b: ?
- </script>
' ^* R6 \6 m2 T8 { - </head>
- I& l5 z! P6 `. I! e1 } - <body onload="setInterval('scroll()',second)">) Q- Y0 u8 \( Z
- <div id="word"></div><br/><br/># M& v. z7 g, m! r6 F2 L2 C
- </body>5 p' k) P2 Y6 S- y' F
- </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。$ h9 w0 N( ?- A0 s1 T0 _" |
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">8 ^; t8 y! Q/ F/ q0 _
- <html xmlns="http://www.w3.org/1999/xhtml">( S' X1 i% _6 z3 ?+ y" L; ^
- <head>+ {% H8 n, ~$ c8 }
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />7 E1 E1 Q' t+ ]8 {4 G/ Q7 C. N
- <title>无标题文档</title>
% w' d& f" J# e0 ~4 \ - <script language="JavaScript" type="text/javascript">
/ ~! m" Z2 C9 ^+ U - var second=5000; //间隔时间5秒钟6 o5 ]0 R% \, w+ j1 M" X
- var c=0;5 O4 C" A7 ?; ^8 a0 V
- function scroll() {
7 a+ m7 m( L0 y7 A2 a - c++;- n5 Q9 {- l: g: S
- if ("b" == document.activeElement.id) {
& c$ p/ {# `7 o( `6 N - var str="定时检查第<b> "+c+" </b>次<br/>";
5 n# e0 z* @, i& q4 ~8 T - if(document.getElementByIdx_x_x('b').value!=""){# I' U) |& u/ o' n: [: [- r
- str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";
. {* u! ?: i4 q# s - }
: @8 j7 [3 r" B2 p/ i. e - document.getElementByIdx_x_x('word').innerHTML = str;' }) g+ H q. G3 y" U; j# A
- }# W: }$ p! @+ G2 @- u- s
- }
$ j! _0 H5 V! T" u - </script>7 V( C+ l _6 z. S3 ^5 w: \/ F
- </head>
& I% U5 M9 J! s* C' o) l5 \ - <body>8 t+ V. @) E- F; I
- <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>
2 w7 `- X% f- K$ Z - <div id="word"></div><br/><br/>
" _" U, _% Z' O) l7 f" d; A - </body>
' S% v5 Z8 [+ O$ y, u0 c) o# f - </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。5 k6 n4 @% ^7 }7 f3 n# c
- <html xmlns="http://www.w3.org/1999/xhtml">
' ?, C* x; h3 s8 F - <head>
. M/ Y& B: A& U5 t - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /># L2 J7 |$ [4 X
- <script language="javascript">
" c: E4 H r# O$ Q- G - function count() {6 M* C. ~: C$ k3 o
- document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";
7 I' l& L" ~8 w( [4 [ - setTimeout("alert('十秒钟到!')",10000)
2 q0 k5 ~) m3 ^ - } f2 G6 w, ?3 Z2 J# z
- </script>
2 {, M0 t9 g2 t/ L/ W: z5 {+ K! s - <body>
. u# C) I0 V3 u. Z; }3 z& }1 ?- Y/ J - <div id="m"></div>0 T& _$ Q+ U& O. p9 E! ]- I
- <input TYPE="button" value=" 计时开始" onclick="count()">- D5 O3 J0 L( [! \: Z+ ^6 z/ x
- </body>
% u& w0 J6 R$ E+ |1 ` - </html>
复制代码 例4:倒计时定时跳转
+ D' Z' N" L: y8 O8 b; ]. g- <html>
$ m7 `$ A4 L) _4 `9 X* L4 t! t - <head>. \, V( Q0 m1 q( q# f# S
- <base href="<%=basePath%>">! V2 P; @( V4 K# D! v2 M; S
- <title>My JSP 'ds04.jsp' starting page</title>
, ~5 P# t2 W7 E3 V( Q - <span id="tiao">3</span>
5 K5 w q, J4 x9 v& @/ {& S - <a href="javascript:countDown"> </a>秒后自动跳转……7 n; j" j z5 S: R+ G
- <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>
. t7 v1 v! H" w6 G2 H4 ` - <!--脚本开始-->
( A1 ~, m- o0 H/ \$ n& N# U9 h( e# Z: h4 N - <script language="javascript" type="">+ t# n; F: z* P0 Q) Z
- function countDown(secs){
. I- i5 W. t+ J$ [( M" o& D. D0 { - tiao.innerText=secs;
8 i/ ?5 Q# y" Y5 B- m7 f" b - if(--secs>0)
4 n* D; E# x! w# I - setTimeout("countDown("+secs+")",1000);
4 C6 ], F2 ]) c) _2 }& [# C - }
- J" \, S! c. c+ I& D+ n. Y - countDown(3);; f- w! l2 y p' a r! m
- </script>* I( N- y% e: a @% s" |( [
- <!--脚本结束-->2 f9 g9 {) P' q' P4 E: H
- </head>
复制代码 例6:
" f) n2 G# W/ L& T2 j% ]- <head> ! F; R4 }) T) j/ E2 c
- <meta http-equiv="refresh" content="2;url='b.html'"> c! ^: X. }' }3 N
- </head>
复制代码 例7:; y" {; n7 l1 F# g* U6 s
- <script language="javascript" type="text/javascript">0 u; z- q% a1 g5 U( Q
- setTimeout("window.location.href='b.html'", 2000);
) O# e7 O! D% E - //下面两个都可以用9 q$ o$ \/ W6 B/ z0 E) S! ^
- //setTimeout("javascript:location.href='b.html'", 2000);" z- t, B( F+ V4 e) P- o
- //setTimeout("window.location='b.html'", 2000);
+ K1 q/ I Y3 b7 b) W5 u, y - </script>
复制代码 例8:3 c$ q$ f* o1 _! J3 D
- <span id="totalSecond">2</span> ~$ u: b9 _; N! a. D i
- <script language="javascript" type="text/javascript">
: i3 H# ^# G2 R8 L# H# c - var second = document.getElementByIdx_x('totalSecond').innerHTML;
6 Q' M% s7 |$ L; ` - if(isNaN(second)){
" _0 n( Q1 Q- `; C - //……不是数字的处理方法: `& @9 X9 m; Z2 u
- }else{* R9 f. {8 R5 ~& b% X
- setInterval(function(){/ {; j* @0 Y9 m$ w
- document.getElementByIdx_x('totalSecond').innerHTML = --second;" m2 i! j* N# j6 W3 O
- if (second <= 0) {. @, C" H- n$ G1 M
- window.location = 'b.html';8 q0 y* z/ X8 f% ^8 A& ~3 o# Z
- }1 u2 _$ [1 t6 F k0 L8 a. F4 V+ o6 ~" d
- }, 1000); j i. J+ B. o- p
- } + Z( [! C% B0 B
- </script>
复制代码
& V" T' H5 @% N1 b8 v) \( g: z$ r# R% n5 } L! C
S5 o0 r% y' t" j& |/ O1 W
|