1,只执行一次的定时器 3 Z! @. F5 P* M
- <script> ' Y) L& `; H: s; E; `
- //定时器 异步运行
0 T: G3 I e1 @2 @4 q. F* { - function hello(){ ) p0 s+ o) C+ @
- alert("hello"); 9 X/ i# x6 D) a: v( C* l, O
- }
6 J5 F5 ~8 N% N* b - //使用方法名字执行方法
: L; w2 e% E! ~0 r9 P% a& D - var t1 = window.setTimeout(hello,1000);
* P$ F" N8 b9 j* ]+ c - var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法
$ \# z! P9 R+ n: ^ - window.clearTimeout(t1);//去掉定时器
' O' d {1 N. O2 `4 ?0 N6 Z - </script>
复制代码 2,重复执行的定时器 ! m& F8 k% K3 Z- W2 h% o
- <script> $ x' i; T4 b3 B2 q
- function hello(){
2 ?# l$ @# R& f# {' E7 i) l7 a - alert("hello");
6 m4 z9 V: l( F, t; [ - }
5 E1 L0 n% }5 V! n/ i - //重复执行某个方法 + T4 g6 O" O- G
- var t1 = window.setInterval(hello,1000);
2 Y- P5 f. N$ p% E6 X L - var t2 = window.setInterval("hello()",3000);
! S1 Q2 j1 m; ]8 O1 l - //去掉定时器的方法 : O. `* q( d& O9 x, g" o
- window.clearInterval(t1); + }) L. B G: {( n) y
- </script>
复制代码 备注: & N1 N) N; H4 n {( Q
1 g4 Y; e3 x7 I. I# ~) z& `
如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决:
. e) y) g! G$ k5 h3 W可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。3 X( ~" X5 z8 |# O5 P8 [
/ _6 F9 o2 |4 b0 D% k1 O
在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);
7 z, C. n! B& B' y) f2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成9 d4 y1 r/ N% N5 k
“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。
; p0 B7 G# K+ u$ o/ z% Z% O 倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。
' c' z4 o) l* G' c9 K4 D3 K4 N& i比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,
; U2 W" L" Q4 x+ f% H# D4 Z; g则需要用到循环定时器“setInterval("function();",delaytime)” 。 获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。
3 X9 u3 @+ l5 l5 H2 v2 H- e比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。 定时器: 用以指定在一段特定的时间后执行某段程序。 JS中定时执行,setTimeout和setInterval的区别,以及l解除方法 setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。/ k' T; u7 y5 h/ T1 ^* g* A1 o
setTimeout("function",time) 设置一个超时对象 setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.
- F' g% ^% G1 Z# ]setInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复。 clearTimeout(对象) 清除已设置的setTimeout对象1 i% l X3 n: Y8 r- l" R
clearInterval(对象) 清除已设置的setInterval对象 略举两例。6 W [* x$ T. |1 \! e9 w* s |8 B
例1.表单触发或加载时,逐字输出字符串
! Y8 w9 ?$ z) X9 W- <html>
5 i F& O, p- ?, t - <head>
- f. c9 Y! |. U1 x( W6 t* V - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />- r' e0 n6 i3 g6 X. |5 f
- <title>无标题文档</title>/ x% c5 J6 Y* `
- <script language="JavaScript" type="text/javascript">! d3 q) g1 S V& C+ V. B. m5 p6 u7 w
- var str = "这个是测试用的范例文字";9 u/ ?4 c7 s+ |% k; u3 Z# Y3 C$ B
- var seq = 0;
0 t' x& R# l6 l; d - var second=1000; //间隔时间1秒钟 m. }. ?2 O, b: \0 x
- function scroll() {) `/ V2 [2 m d: j8 j$ D
- msg = str.substring(0, seq+1);
7 h" h; f: q& p { - document.getElementByIdx_x_x('word').innerHTML = msg;' s# q! { B* Z
- seq++;- d; D9 `3 g% y# S
- if (seq >= str.length) seq = 0;
7 ~- w# B2 H' x0 m" R - }; a4 R$ ~8 c2 n- B1 J' i4 l" d3 z
- </script>
, W# d# }) E0 z0 @0 c - </head>
Q8 N7 T9 ^5 I( n8 ?& d, w# a; I2 s - <body onload="setInterval('scroll()',second)">
2 @2 @4 |, S* [% ?) C - <div id="word"></div><br/><br/>
( O! q& @. ]- s - </body>4 {7 G5 }! w: B K2 t
- </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。" y p# l5 t8 @, ^
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">( y9 W+ R7 \# j+ q M5 R
- <html xmlns="http://www.w3.org/1999/xhtml">
# I; j8 L% W( @' ` - <head>% B- R3 a9 {) j! R
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
! R4 ?4 Q, V+ F8 e - <title>无标题文档</title>
% `* D) B( J3 s) e; ~ - <script language="JavaScript" type="text/javascript">/ o# D. u1 b! `9 C$ W7 U/ x
- var second=5000; //间隔时间5秒钟
' [; `% i# R5 Q# c6 f; o, S - var c=0;# F; \1 S/ k; J" E. u
- function scroll() {
+ R$ ~ ?$ u! F5 n5 p - c++;9 B- B% l0 ?( I9 d7 m3 U/ p$ e
- if ("b" == document.activeElement.id) {: v- G) s* ~+ g# I4 d' P
- var str="定时检查第<b> "+c+" </b>次<br/>";) Z4 ?% T5 e/ n( H* `
- if(document.getElementByIdx_x_x('b').value!=""){
9 ~3 g/ ~2 x1 |$ k) A - str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";$ t. g% K7 V/ e6 Q4 b% B) X
- }
5 e* w4 T, t E: U$ a6 D$ ?* P; z# \3 c! U - document.getElementByIdx_x_x('word').innerHTML = str;
1 ~$ m# Y4 ^2 ?0 x/ y - }$ S8 {- d# ?( P, H9 ^
- }
( I# W0 H+ B' x, v' T$ G$ b+ l - </script>4 W( P. v8 z* P3 u1 a* A; c4 ?( i
- </head>
j- _2 W# [. [ B# Q6 ^ - <body>/ C" ~. n; H$ z' |4 l9 a$ O: h
- <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>$ X' \ f2 ~# Z& }, J
- <div id="word"></div><br/><br/> n; {5 M$ a7 T' a
- </body>
2 R& d- k( N6 j; ?7 i) ~' c" B - </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。8 H8 D4 ~* }+ B
- <html xmlns="http://www.w3.org/1999/xhtml">' ?/ V& I3 ^/ s' r/ d0 p
- <head>
% [$ e8 s4 R* g - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
6 O/ k* x$ N! E7 T - <script language="javascript">
; G$ a5 J; J/ [0 K: @ - function count() {8 S/ b: G6 ^* `% R+ V% E( P- j
- document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";
! \/ D3 b1 y4 S, d: u - setTimeout("alert('十秒钟到!')",10000)+ }7 w& g# A4 f2 i5 g+ ?$ ]0 u) v
- }1 o8 `) @" F2 X% `8 T3 Z
- </script>
) T! b1 T) x0 S3 h - <body>% G- q% v& M+ q
- <div id="m"></div>) G% ?: ]! ~) `5 X5 i Z% q& u
- <input TYPE="button" value=" 计时开始" onclick="count()">
0 H0 v" B b2 w1 Z - </body>
; P, Z; N w8 u. \; o5 | - </html>
复制代码 例4:倒计时定时跳转
7 U$ [/ z/ n' ^# J3 S% e- <html>
% H$ m3 q8 T8 u3 ]0 i - <head>
. q' H* ^$ R$ e. d8 I+ F: g; V - <base href="<%=basePath%>">
+ H$ f( I; ]" l: \8 T6 t - <title>My JSP 'ds04.jsp' starting page</title>5 n K' Y5 F6 y4 C* Y9 \8 {
- <span id="tiao">3</span>$ M# ^4 E7 S" M! ^4 D* D! T
- <a href="javascript:countDown"> </a>秒后自动跳转……# g" W1 S/ ?4 G1 A2 B
- <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>
# k4 L* n+ ^5 |, T" h/ M - <!--脚本开始-->
; ~" U5 D1 [- L. X - <script language="javascript" type="">+ c& `8 b( R- c5 ~6 Z2 ?" ~
- function countDown(secs){
$ s, f, S1 }2 o! Z; G - tiao.innerText=secs;
8 \7 c0 Z# |& y7 I, D& f - if(--secs>0)5 i$ D: p- V* ?1 ^/ _& ]% E E, Z
- setTimeout("countDown("+secs+")",1000);2 z, h0 H$ G) p, X1 F3 I) N7 Y
- }
% a) O5 i' u* U2 O3 Q0 v, ]) K0 w+ x - countDown(3);" m8 D- u3 t! @* M
- </script>
" L8 w4 _3 u9 y, T- C, r - <!--脚本结束-->+ W1 A& W3 ], L
- </head>
复制代码 例6:! E# k I; J5 a5 k, ?+ d
- <head> ) J1 R! I4 o K4 F5 U
- <meta http-equiv="refresh" content="2;url='b.html'">
& {7 ]1 ^- Q6 G% H2 n: h4 T7 V) r - </head>
复制代码 例7:
! V- ~- f( r( J L) z$ R- <script language="javascript" type="text/javascript">+ q' o4 f2 d, o: H. u& O" w
- setTimeout("window.location.href='b.html'", 2000);9 D: Q. }7 v' d
- //下面两个都可以用6 L5 C( a2 V% V3 k: Y+ Z6 K+ f
- //setTimeout("javascript:location.href='b.html'", 2000);
; W( O, `0 g. P+ g% S. Q1 ? - //setTimeout("window.location='b.html'", 2000);# i# m7 `8 F( X& r3 L/ ~
- </script>
复制代码 例8:
- `5 g0 ~8 d/ N l2 e+ {+ ?4 _- <span id="totalSecond">2</span>
/ C& x% C# T* | v( P* | - <script language="javascript" type="text/javascript">8 i$ r9 k& @- k4 m9 Y. q
- var second = document.getElementByIdx_x('totalSecond').innerHTML;
7 U7 x8 v- v( Z" f7 O/ e* i - if(isNaN(second)){" t/ m' M( d' O( j( Y' J% g
- //……不是数字的处理方法2 u/ U/ l7 G# ?5 {% L1 [8 K
- }else{
* q! ^: A, p- V' { - setInterval(function(){) F* |8 u- q ?6 H1 U+ r- n4 S5 V
- document.getElementByIdx_x('totalSecond').innerHTML = --second;) ~& p2 X4 H# x" F) ` s
- if (second <= 0) {
! a! }4 P7 D5 q% V% n - window.location = 'b.html';0 O; X1 A9 P: p% W0 I
- }
7 P; B5 u2 v2 E" h% N) \ - }, 1000);: g4 E$ K8 h0 f" V
- } 4 {& t7 z1 d e
- </script>
复制代码 ' q; Z1 k/ s; r: A. Q
' ~0 I2 q& i0 x3 ]7 j
# S) E0 \, ^7 ]8 h6 a w |