1,只执行一次的定时器
) I u8 X* s, E; c: [- _ h- <script>
$ p: ^3 Y4 l$ ^7 { - //定时器 异步运行 & P7 l% t: b' v) R; u$ Q [! B
- function hello(){
2 o7 Q6 |, F1 Y) K - alert("hello");
/ f0 S0 K6 I- k% c - }
5 Z7 U/ x a" O% ?$ R I - //使用方法名字执行方法 + u/ m6 d# ~' S
- var t1 = window.setTimeout(hello,1000); % M9 ~6 D7 ~) J4 s8 v7 j
- var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法 # p% e% l% h/ w, H' ~2 Y8 _
- window.clearTimeout(t1);//去掉定时器 * g* ?3 ]/ f( z( ^ w* U7 [
- </script>
复制代码 2,重复执行的定时器
" F, M d" ?9 T& w) U, O3 I- <script> * y, l6 I- g6 \* i: p( u; _
- function hello(){
& o: M. Y. K" \. ~) o0 w - alert("hello");
5 f, g* L; s7 A4 T6 `4 U& s/ @ - }
3 t4 @6 R* O: {0 o - //重复执行某个方法
2 N4 f4 Q9 ~9 s8 C# A: e2 [ - var t1 = window.setInterval(hello,1000);
* r) q# j" X" E1 X - var t2 = window.setInterval("hello()",3000);
8 R. k* F0 R4 G7 F' `; R1 A - //去掉定时器的方法 1 {* D3 M$ }+ L) p
- window.clearInterval(t1);
5 v1 q+ p5 F) K2 z+ X* S - </script>
复制代码 备注: ( U, T$ J7 c! _) m8 N
8 G0 |" V o- s" C; r; _
如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决:
0 R, E* g$ K U( B- F可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。
4 f+ ^7 d% S+ e x3 h
$ O6 S( ?! i0 a" F% R# W在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);
& `8 E; i- }9 r. D4 V- A3 F2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成
) U& _( l+ S) R“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。
( @0 t3 i% X4 N$ g6 c 倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。
+ G8 z+ }; l' l- V) o比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,1 s7 U0 J4 ^2 ~: F
则需要用到循环定时器“setInterval("function();",delaytime)” 。 获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。' A. N, G4 Z: D( G3 L8 H4 r* i. a
比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。 定时器: 用以指定在一段特定的时间后执行某段程序。 JS中定时执行,setTimeout和setInterval的区别,以及l解除方法 setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。. p# z; K7 }' g4 l; Z4 r+ J1 V
setTimeout("function",time) 设置一个超时对象 setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.
% X, A9 H9 m1 p; ZsetInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复。 clearTimeout(对象) 清除已设置的setTimeout对象& Z8 e0 B' f! B5 J: u
clearInterval(对象) 清除已设置的setInterval对象 略举两例。
" a. J9 ?0 H9 O* s3 s c& a例1.表单触发或加载时,逐字输出字符串 8 ~, `% z Z$ P. E" A B$ y4 @0 Q
- <html>; ^" i0 @- [5 n& c: z5 K. t
- <head>
, x! f8 B) g2 O6 z# j& ]" c - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />5 Z7 C6 r O- b6 A
- <title>无标题文档</title>
# h! ]7 t1 }* ?) z - <script language="JavaScript" type="text/javascript">& G! Q' O; S w$ [: [/ N; o
- var str = "这个是测试用的范例文字";4 h A2 {1 C/ [' w4 f7 ~
- var seq = 0;
0 d( R+ h; A1 i4 v" g - var second=1000; //间隔时间1秒钟
/ y3 Q. h# {/ q6 V7 V5 { - function scroll() {1 K0 N& G; Z7 E4 K6 {4 m6 m
- msg = str.substring(0, seq+1);6 w$ W- E7 _: d6 y
- document.getElementByIdx_x_x('word').innerHTML = msg;& P( `& K; h- I8 p* D
- seq++;
% c4 ^, P3 F% d' h ]$ h7 S+ D0 Z - if (seq >= str.length) seq = 0;
" L, y; I& @* W c" H - }
9 ~% i1 S Y9 f% ]! c) u2 { - </script>0 c) ^& B6 b7 U g
- </head>
+ ?3 l! m7 ^1 Y+ z- m - <body onload="setInterval('scroll()',second)">
5 I2 R4 N, ~7 y# P - <div id="word"></div><br/><br/>
8 q5 t! u+ r+ k5 X! ] Q - </body>
: F( n: i7 u& [3 h - </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。
1 x* h. J: B9 H& ]* t- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">6 h2 W2 z* ~2 k/ C9 @
- <html xmlns="http://www.w3.org/1999/xhtml">
/ }& ` H/ T$ O5 F6 s1 ^: S - <head>! _ X8 ~3 ?5 B; j& o9 g4 e3 v
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
. Q. \1 @3 [, l. m - <title>无标题文档</title>2 x4 O7 D/ E2 f4 _) f" A
- <script language="JavaScript" type="text/javascript">
4 @* q( P; U0 q9 H4 r; F) m" O - var second=5000; //间隔时间5秒钟
4 V: J, z' R) p1 n - var c=0;
8 J8 C; o' ?% E, @6 k - function scroll() {! _% l X% `2 [# U0 D
- c++;
, g4 f8 ?: U( |+ Q9 M; Y! ~ - if ("b" == document.activeElement.id) {$ J7 m/ j! f! P8 y
- var str="定时检查第<b> "+c+" </b>次<br/>";! S8 w( s) _ ?9 I. B! Z! G3 n
- if(document.getElementByIdx_x_x('b').value!=""){
$ T1 n9 Y) e4 _/ R/ C( K5 B" d# m - str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";
3 q$ _( h$ t9 d* h7 Y. a$ d9 D T- x+ W - }
& Q, |3 d8 h3 ^; H2 e* D* z - document.getElementByIdx_x_x('word').innerHTML = str;
/ ?# e% p0 L# G9 v: P9 x - }1 u- {: v4 l% ]2 z8 q( t5 g' u
- }( i& E$ B+ k _8 { d* f
- </script>! e6 k$ }( d$ ^# d; W. c
- </head>
, S; f2 L0 `% |0 l# F& w- O/ d7 | - <body>0 G s: f3 _$ i# \: K: l8 x$ y
- <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>/ r3 r9 `" n2 s+ ?
- <div id="word"></div><br/><br/>
* O7 {" b( T+ j+ M* A7 W - </body>
4 X2 ?, b7 s, a3 L" Z# u( n - </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。! x6 r9 `9 Y2 _7 \
- <html xmlns="http://www.w3.org/1999/xhtml">$ c4 X/ H* v8 ~5 G0 u& c7 L
- <head>
A9 D3 Q6 L8 T& q/ M8 S - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
: g& P4 S. N6 r& ^9 j0 r( J - <script language="javascript">2 J+ d" J% @! L- w; ~ M
- function count() {' V* G- W6 A$ i
- document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";1 e8 M$ t0 n) S# ? B* _( `
- setTimeout("alert('十秒钟到!')",10000)
# I6 @5 g% \5 L - }" R7 t( t+ K+ N, _( b
- </script>% }6 V1 P: N6 j4 H* c4 _
- <body>" Z0 z' O3 U, e# V* ?' c% f) m4 d
- <div id="m"></div>( e2 ^& a) d( o1 ]
- <input TYPE="button" value=" 计时开始" onclick="count()">
5 i6 T9 T; R N* E - </body>- R! e; q/ _$ _& Y
- </html>
复制代码 例4:倒计时定时跳转
) L% |8 B0 ?- C- <html>
1 Q. K8 K g2 v, `2 W - <head>* j( S# @: y! z" B0 h. K. ]
- <base href="<%=basePath%>">
1 E0 h I6 p1 j, K, p% s3 r. V - <title>My JSP 'ds04.jsp' starting page</title>
W+ r: r6 K$ P2 U5 f - <span id="tiao">3</span>8 @/ [; m. y& I2 h% o
- <a href="javascript:countDown"> </a>秒后自动跳转……" P8 m$ n. @9 Y- n4 h2 P
- <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>
! `% k/ l6 _, M6 b" X& A - <!--脚本开始-->; I6 c' ]8 }2 z! x- ?
- <script language="javascript" type="">, D* c6 r( M6 n$ W( U/ \
- function countDown(secs){
! I3 {$ X5 _& l4 E - tiao.innerText=secs;
7 h4 ^7 y1 h9 e; E& E7 ~% p - if(--secs>0)4 ]& v( i% z. |' x
- setTimeout("countDown("+secs+")",1000);
9 @% {; k1 Y+ s7 _) E0 h7 {6 H - }1 Y# a' ~9 R# L2 f9 |1 `, U: a
- countDown(3);
9 \+ p3 C0 y5 Z' n/ Z# O2 Q - </script>
% G+ R) T g' U& c X+ X* ^: q: j l - <!--脚本结束-->
( G, Y) Z8 i. F' O1 W' I7 m - </head>
复制代码 例6:5 a! @! D! Y ?' Y4 ?6 x
- <head> ' [$ A/ Z2 u5 t. b/ s2 W9 B
- <meta http-equiv="refresh" content="2;url='b.html'"> - X. r, Q/ A5 t
- </head>
复制代码 例7:
" U# T, Z1 D$ G& V9 c+ Z- <script language="javascript" type="text/javascript">& d7 G8 v m# o$ r6 F% t
- setTimeout("window.location.href='b.html'", 2000);! q2 J6 _$ d3 X0 U% D1 w0 R
- //下面两个都可以用 f3 m( t/ z$ I( `+ Q
- //setTimeout("javascript:location.href='b.html'", 2000);
2 P1 Z7 s& M0 _* v/ x: g% W+ N - //setTimeout("window.location='b.html'", 2000);7 U& U s) R% C2 H, S! B
- </script>
复制代码 例8:: ?1 ]8 J" j: K
- <span id="totalSecond">2</span>
+ H) l: m9 M5 ^7 {8 R; T; j - <script language="javascript" type="text/javascript">4 F! K+ I6 p7 E$ D6 ^$ v7 F- f
- var second = document.getElementByIdx_x('totalSecond').innerHTML;
& A4 u. ~, f- z! g$ Q0 p \ - if(isNaN(second)){$ W5 A! F* r2 m7 A
- //……不是数字的处理方法
5 H+ A0 v5 N6 t y I - }else{9 q$ l4 L% t X+ K6 F
- setInterval(function(){5 P9 P$ y/ k/ \0 u: Y+ x
- document.getElementByIdx_x('totalSecond').innerHTML = --second;4 O: i4 @0 t5 _3 O1 W) A A, T- Z
- if (second <= 0) {
$ S( ~( Y! o/ M* T! B: S3 a. w+ J - window.location = 'b.html';1 G+ @! D4 L& Y! e: {; |# e5 }4 C, ?
- }2 I0 u+ C9 l p3 ~) a7 u4 }. i
- }, 1000); }1 H K3 O* J. e' t
- }
$ Q0 s0 B& F. _5 u% c9 }3 G$ X - </script>
复制代码
( m/ T9 } T" C0 _2 a/ w/ ~7 s
+ h. `; }0 V4 O( w$ q6 h* D$ }
9 Q7 `; f; N2 x$ n |