1,只执行一次的定时器 7 h6 o: l) T" [% }5 [; b b
- <script>
) L1 A( Z1 o5 A - //定时器 异步运行 5 o/ ?. D5 j6 z G, f
- function hello(){ # O' _! T9 h7 u! L5 ~& K
- alert("hello");
) l: m/ a4 J* m$ k; G. v9 J - } * @/ t' M: K1 p: E6 G' V$ _! l
- //使用方法名字执行方法 6 \) a5 D7 s; P+ D; ] ^# Z- m
- var t1 = window.setTimeout(hello,1000);
! o: y/ T& c2 w# O* e/ I - var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法 7 e" V" ^7 i4 R# c0 g3 F) _1 {
- window.clearTimeout(t1);//去掉定时器
" x4 m0 y4 F2 c3 `. L7 b, {% [( ` - </script>
复制代码 2,重复执行的定时器
! |8 E, U, F5 S+ m- <script>
8 H& g R2 u( T; U# u! U) P' X. m - function hello(){ & q9 _/ p* C# F& M
- alert("hello");
$ Z+ G2 }5 g+ n- {1 e9 V4 F - }
7 V/ J9 {( c! e( \) @ - //重复执行某个方法 9 m ^# ]* i4 ~& g/ W
- var t1 = window.setInterval(hello,1000);
. r8 j- P4 Q# v1 @6 O - var t2 = window.setInterval("hello()",3000);
: d- R" A) E" i" i9 m- B( I - //去掉定时器的方法
- g! d. i$ h* V* O - window.clearInterval(t1); , J5 T. k5 Y. C4 u, k3 X
- </script>
复制代码 备注:
! C( A) l b3 g! i! j; `: i( @ s( Z5 S0 X" J* R
如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决:
k# y4 S' r" C) S, P7 L2 V* v可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。0 n( ^+ u( g1 F# v4 q
1 o/ K8 i0 {% u2 k' w
在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);7 J/ x$ l, T! U( S) ^" n$ F
2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成5 N4 L. N4 B3 V: ?5 ]9 h/ S
“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。, J6 C; \ ]' T7 Y3 f
倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。
6 r1 V9 p4 U$ ]比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,/ c5 r, ]0 o2 K6 M- y# b" Y
则需要用到循环定时器“setInterval("function();",delaytime)” 。 获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。
; B0 H9 X& M* b3 I比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。 定时器: 用以指定在一段特定的时间后执行某段程序。 JS中定时执行,setTimeout和setInterval的区别,以及l解除方法 setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。
5 H" }7 N5 ~# P) c" w1 z7 YsetTimeout("function",time) 设置一个超时对象 setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.( B- _3 H; c: Q, r
setInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复。 clearTimeout(对象) 清除已设置的setTimeout对象! ^. M1 ?3 `4 e) [: o
clearInterval(对象) 清除已设置的setInterval对象 略举两例。% m& n y( W0 o, l* h6 T$ r3 S
例1.表单触发或加载时,逐字输出字符串
: |6 Q7 r1 o8 y! }& T. a- <html>
+ A( i) z$ q( R" f/ Q5 J - <head>
- h! s+ u" Z. t2 y2 | q - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />7 i" J3 s8 v9 Y
- <title>无标题文档</title>& U6 f0 K- a% v) I5 | n: @
- <script language="JavaScript" type="text/javascript">' `% o& }: B6 w' z) I7 v
- var str = "这个是测试用的范例文字";$ U( @* b' ]6 D: o) x$ W
- var seq = 0;
) x! F5 Q4 g0 y- Y( a1 s4 B - var second=1000; //间隔时间1秒钟0 k/ X3 @3 ^. ?% Z+ p
- function scroll() {
& d, d2 f8 c9 D" i - msg = str.substring(0, seq+1);
7 z5 u* k/ E0 u- w; v6 h - document.getElementByIdx_x_x('word').innerHTML = msg;, m/ ?! z/ N2 o/ H! z/ J% b& ~) B
- seq++;6 |" I* Z( t, d! J
- if (seq >= str.length) seq = 0;
, R( V, x% o, d3 K$ K* H% c! M4 Q; b - }8 U1 G% M0 j p" v7 K
- </script>
! ] f, v4 ]6 P( Z, f: l - </head>
' j: S' C* J' k6 d, B! E" t7 D - <body onload="setInterval('scroll()',second)">; N) b+ T4 C$ a- @3 Q0 Z
- <div id="word"></div><br/><br/>$ W4 e3 T h9 D, D' g
- </body>
3 A: y3 ^/ ^6 t* i8 a5 Z. R - </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。( D6 @& x7 e& s, D4 \; W' X
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
1 s6 E9 [4 E+ I |8 [$ ]* G - <html xmlns="http://www.w3.org/1999/xhtml">
" ?. M! A1 D' U- W( h' v Q4 E - <head>
' g6 O3 V* A0 O* @/ o" k: @$ l% _. h - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
' `! S; g0 R" s; J - <title>无标题文档</title>4 O1 h, T% T2 v( F$ R3 F4 q
- <script language="JavaScript" type="text/javascript">
w+ q, N) B& y6 N* [6 @& T - var second=5000; //间隔时间5秒钟 L, \2 n5 m' P( z* [0 m. u' D
- var c=0;5 E$ S% J1 S* C
- function scroll() {
9 @0 f; M& `: g6 ] - c++;- x, v5 M7 p8 C7 c
- if ("b" == document.activeElement.id) {
" U% [7 J" E. y' ?+ D - var str="定时检查第<b> "+c+" </b>次<br/>";
: N( E3 b) H% O/ c* `6 _0 v - if(document.getElementByIdx_x_x('b').value!=""){
) e/ \/ j* T( E* _ - str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";' W, s0 D1 `9 ^! W: Y
- }3 C% K8 [: G9 D4 v; x
- document.getElementByIdx_x_x('word').innerHTML = str;
6 H, c4 P0 u$ i& V1 Y- {3 d. ?. [, h+ C - }9 Q! k3 t3 \/ p1 N/ a4 O5 f
- }- V. X. `9 ?* p e5 m/ }6 @
- </script>! i& f8 M( J0 [+ a5 J
- </head>( A/ W. N) m: F8 g
- <body>6 Z! F4 T/ h; x1 V3 ^2 H
- <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>
: v2 U4 d9 p9 i" U" A, y - <div id="word"></div><br/><br/>
, M* I. C/ n, w$ ?* Z - </body>1 a$ \& S: m3 q! r& u* [
- </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。
6 L4 Y$ s0 {0 ^- @2 N- <html xmlns="http://www.w3.org/1999/xhtml">
* S- C$ S7 |) E4 i7 K; U* ]+ k - <head>1 A- ~* ?% Z- o6 \+ H0 M* H" r
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />3 h+ G) _* Z8 D; D& H
- <script language="javascript">6 @- w0 E4 z1 G) [
- function count() {/ F! n/ t, D8 \7 o$ c
- document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";
; m) X3 y d* ~& m# J( u6 F3 F, k - setTimeout("alert('十秒钟到!')",10000). f0 M R1 L1 Z, {' ~8 X) ]5 i
- }0 ^* k$ D/ `: |- C8 s
- </script>
; v+ l& R/ N' z4 f9 Y* I* I' \ - <body>
- c5 C) b+ k7 O3 h* }- s0 z Q - <div id="m"></div>
0 `! |7 i' Q ~1 ` - <input TYPE="button" value=" 计时开始" onclick="count()">
- R6 u H$ Q$ p# L" D - </body>
3 M7 _! `9 d% L# G$ x9 d$ o - </html>
复制代码 例4:倒计时定时跳转1 B4 n* {$ K) Q P
- <html>
# s6 Z( v4 h, Y5 E2 j( Q9 L' z! U - <head>
+ x1 V! Q. r, O6 v. n$ b - <base href="<%=basePath%>">8 f. y6 o3 e' X8 M4 ?" i% g
- <title>My JSP 'ds04.jsp' starting page</title>- u+ ?7 ?" V0 J9 u& G
- <span id="tiao">3</span>
) K( ~/ B/ b$ p& q. w" a. Y6 k) {$ |+ |- S - <a href="javascript:countDown"> </a>秒后自动跳转……1 I1 p+ `, o" P0 x# @
- <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>/ m; L4 r7 H; }5 g8 F- u6 P% P
- <!--脚本开始-->1 \- q: i& F3 t2 }- n5 Y+ _
- <script language="javascript" type="">4 w. w$ A, j2 V F' Z) F* d, f5 i2 L
- function countDown(secs){5 R5 w% H' d4 Q" [7 w
- tiao.innerText=secs;3 \7 \; @8 K5 i' j4 W) Y8 n! p
- if(--secs>0)
; {$ s0 K, U3 V x - setTimeout("countDown("+secs+")",1000);2 t/ Y. A" W! f4 L8 w/ g9 Z
- }
6 Z# d3 }" v; }: s - countDown(3);6 w8 J: V+ T& l4 A" H6 ]
- </script>, ~0 c& {* Y# u' w" X4 I( d
- <!--脚本结束-->
6 Y _0 Q+ q) B9 Y) v( w2 e- f6 O" B - </head>
复制代码 例6:# H T( ~8 _- R! j' U7 \( `9 }! d
- <head>
/ f2 g. Y- U3 w# t5 h+ c - <meta http-equiv="refresh" content="2;url='b.html'"> ! w! H+ d* Z6 y1 `% ~ p% I2 V
- </head>
复制代码 例7:, C9 U5 l" ~/ G* S7 x
- <script language="javascript" type="text/javascript">/ l4 }' E8 d. N1 [7 G, X7 F
- setTimeout("window.location.href='b.html'", 2000);
6 Z: P: I3 n! G j9 x% h7 { - //下面两个都可以用) C* h9 U2 T% {0 F! V+ C0 Z
- //setTimeout("javascript:location.href='b.html'", 2000); C- U9 D5 r& ^, a
- //setTimeout("window.location='b.html'", 2000);* | H$ f: ^6 I
- </script>
复制代码 例8:
4 m& y* Z! M9 o0 M3 o- <span id="totalSecond">2</span> L/ @* |, X- x& L% V7 ?
- <script language="javascript" type="text/javascript"># }' I, b' _0 a) }$ a' ]1 e
- var second = document.getElementByIdx_x('totalSecond').innerHTML;
) Z6 T& w% }, V - if(isNaN(second)){# w( G2 N. p9 l. a# J
- //……不是数字的处理方法
. J' Z! B& K5 [% o - }else{) D; E) j' m& s8 f; d
- setInterval(function(){
. \. k) W% j$ E+ s. N1 l - document.getElementByIdx_x('totalSecond').innerHTML = --second;/ k2 e" l6 c. S: O: U6 G- a% ?
- if (second <= 0) {
+ H8 h; l; Y0 U: D4 O2 y* W h/ Y - window.location = 'b.html';7 X+ N% Q" F) [, J: U- A; |
- }
3 ]8 [2 x) x8 t; v9 J0 w - }, 1000);4 o1 w2 o) j. D. W
- } 2 ~( P# T; c- a% y% g5 i( `! p
- </script>
复制代码
, t, z- X9 c( r9 K
_: j, j w* m2 e$ Z& E9 b+ t) P9 S
|