1,只执行一次的定时器
# e2 k4 I& G- M6 W- <script> $ u- [- e9 I6 k0 m; T J) e) c# d9 v
- //定时器 异步运行
7 A: N0 H# G5 H; n F! N! D8 Y& p- n - function hello(){
: Q! M4 h! x; K - alert("hello");
+ c7 R2 l; @% D5 W5 A j3 U' s - } % i Y/ ^# {/ b1 [- ?7 h: m
- //使用方法名字执行方法 ( y. o6 }; W3 Q. X$ Q
- var t1 = window.setTimeout(hello,1000);
* L: Q. w1 }1 I) u9 k - var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法 8 K6 o; ^9 p" H* F* U& _0 Y
- window.clearTimeout(t1);//去掉定时器
1 b) ^) J8 v, j. ^0 P6 u - </script>
复制代码 2,重复执行的定时器 8 r+ g. k* }# ~9 _9 ^ N! p7 ?
- <script> # z0 h# r: B8 v( q' n, T
- function hello(){
. i& T9 x0 d& `: H' v0 D - alert("hello");
4 z# w8 e/ P# `: w9 P6 m - } ! k+ J- \- b$ _9 f( O* ^
- //重复执行某个方法 3 h t. I& o$ p( r6 V/ h
- var t1 = window.setInterval(hello,1000);
& z* y0 _' L, t; g0 `; | - var t2 = window.setInterval("hello()",3000);
* e0 Y/ I2 \$ Z/ i - //去掉定时器的方法 2 s3 i3 L* c/ ?- |' b+ C( @6 Q
- window.clearInterval(t1);
. W/ p# o' m. R% E8 r( J# y/ J4 P3 s - </script>
复制代码 备注:
. Q, |) T9 L4 K6 M
- S6 [1 q+ e1 O# T4 h4 Y, Q1 Y: v$ `如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决:
) d# Z- m, Y" }% `/ w可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。, p) z. }9 d5 i" F/ H
9 u9 f4 _" {. h) n# J* u& I5 H4 x
在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);
' C& u8 B# d& Z) P B2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成9 i7 i. Y/ V; K8 }6 N5 z
“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。+ A1 E2 O% I( z% D& f/ c
倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。
& @7 b3 S7 z; h) C; @& D" n比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现," t N) t# @& q7 C8 q
则需要用到循环定时器“setInterval("function();",delaytime)” 。 获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。
. k6 ]6 w x( V2 p7 \: q" n' ~2 U比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。 定时器: 用以指定在一段特定的时间后执行某段程序。 JS中定时执行,setTimeout和setInterval的区别,以及l解除方法 setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。; P: B- j& ~2 r$ N
setTimeout("function",time) 设置一个超时对象 setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.
, c4 R* ?1 F6 \" J2 N( m) G5 C, CsetInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复。 clearTimeout(对象) 清除已设置的setTimeout对象
7 X/ i S% C! TclearInterval(对象) 清除已设置的setInterval对象 略举两例。
" X/ i% ~; x7 o" w例1.表单触发或加载时,逐字输出字符串 - X- s1 k" z; }0 D" i/ h: `% E$ R W
- <html>
4 a9 p. e8 ^5 A* C1 ^ - <head>
, {' J$ n* k0 V2 V: u) l - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
, Z5 d Y, t* J; H5 }% t4 p - <title>无标题文档</title>
) }+ Q$ v* t1 {; {1 P2 G: s' j - <script language="JavaScript" type="text/javascript">
3 e4 A2 d, `/ d - var str = "这个是测试用的范例文字";
& ?9 n* r6 V+ B H - var seq = 0;' {- O1 t( `4 y- j {. @: c
- var second=1000; //间隔时间1秒钟
, a1 W8 {1 _. D0 C% F - function scroll() {
) k0 X3 c' i1 i3 B0 d+ T( k% h5 W - msg = str.substring(0, seq+1);
* A9 a# ~' D3 U: V/ }8 ` - document.getElementByIdx_x_x('word').innerHTML = msg;
! D0 C% E6 W) b& g' F- S8 F6 o! R - seq++;" g7 T0 k! A1 C) D! A
- if (seq >= str.length) seq = 0;6 @6 O2 p( f9 q# d
- }
: J8 `9 x& o' y1 n$ }2 v( l; h: z - </script># Z/ ^$ E+ T( ]1 ^
- </head>
, p# b; ]. r; D) B5 F3 P! a - <body onload="setInterval('scroll()',second)">. }# X8 w9 ]* ^2 x* G1 {3 w( _
- <div id="word"></div><br/><br/>
* A: O! c( X, G, a* f+ @2 H8 J - </body>* t5 Q( C$ q3 p- v7 k7 q' K' [
- </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。
# G& o& o( z5 `# T4 q- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">6 Q h, B# d3 \; D$ ~* c( [' I
- <html xmlns="http://www.w3.org/1999/xhtml">- a9 A1 M8 W5 j. I, m3 @5 O
- <head>
x3 P+ P4 V0 v/ A% z - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />% o; ]- Z) |# V4 `: j' V
- <title>无标题文档</title>
4 a( \% ^3 ]0 E! X& T6 f - <script language="JavaScript" type="text/javascript">; l' G: R6 q9 {" I' y. p4 A" ~7 s
- var second=5000; //间隔时间5秒钟; ^0 @$ j# J' c* [
- var c=0;4 y( _; x! n& g) W5 M, Y$ D
- function scroll() {+ x0 @- h3 V( f) k$ \, ]* E
- c++;" j# l2 Y' P2 Z& \2 A b) w% ^3 z
- if ("b" == document.activeElement.id) {
# E: n3 Q0 \6 T7 m( v - var str="定时检查第<b> "+c+" </b>次<br/>";0 c8 h0 N! l% L, Z
- if(document.getElementByIdx_x_x('b').value!=""){1 ]- |* e- W" ~% o# Z5 c' u' A
- str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";7 p4 `; O9 f# E
- }
0 I H I8 K9 d7 _" B# B3 _) r - document.getElementByIdx_x_x('word').innerHTML = str;# P+ [' Y. `& U/ \# t/ E( N
- }
- d6 I" y. ?% q- X; W8 f - }% X& }% |3 k& g6 w( j- H- g
- </script>: f7 U P( k+ \+ v) X5 j; c
- </head>8 z6 c' E2 P) B3 p `0 E0 e
- <body>% z" X9 h0 \6 U2 X; G! N0 B9 n
- <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>' _) b2 O; N, r. l
- <div id="word"></div><br/><br/>' K: o0 o7 R% j
- </body>
& G( y2 f. n. X1 V9 A - </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。! d+ x2 p. R3 ~
- <html xmlns="http://www.w3.org/1999/xhtml">1 Z. r. |. q& z
- <head>
% G* a/ ~; Z+ ^# P B; b7 O - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
2 K5 i @+ G# b+ w+ V9 X z - <script language="javascript">2 ~1 D9 s1 @' O9 _# Q
- function count() {
" t L0 X$ C% s. X' Q- i; Z - document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";6 x A8 N/ N+ n' G6 j# U4 S
- setTimeout("alert('十秒钟到!')",10000)
5 f* j- d* g" T5 ]5 b - }3 G; [$ ?, m$ U0 M/ Y7 P, _
- </script>
% u7 H' m# U9 b- T! ~' B - <body>
5 Z* Y% m, u; _: T6 v - <div id="m"></div>, t2 j K W ]8 Z2 K3 r3 j
- <input TYPE="button" value=" 计时开始" onclick="count()">, D Y2 [; O6 n" D
- </body>9 s$ B! F, V$ `
- </html>
复制代码 例4:倒计时定时跳转
, y$ h. C9 s. W$ m9 L% ]- <html>6 Q7 F9 r: w% V/ f3 F
- <head>
! x( ~2 b) E7 _! S - <base href="<%=basePath%>">2 G' D/ ?" n; G Y
- <title>My JSP 'ds04.jsp' starting page</title>* f! n& r% _; z- W5 p
- <span id="tiao">3</span>
3 Z! _) ~) ]: y, [ - <a href="javascript:countDown"> </a>秒后自动跳转……
1 B6 M2 S( h2 W! S4 H" F - <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>
( @; [, o! K5 z - <!--脚本开始--># _, d( q- F1 s. _# e0 @0 S6 ]
- <script language="javascript" type="">7 \) }( D: Y, m) a( ^4 j& F; q4 T
- function countDown(secs){
- I+ J" E" S9 N1 r' Z. _ - tiao.innerText=secs;% i4 w5 R$ J/ G. C* V' ~
- if(--secs>0)4 y! G0 S1 m/ q) r! W5 n
- setTimeout("countDown("+secs+")",1000);9 r: ]; }8 Q. Q4 I
- }
# j& D; w& m/ L& W5 k: n5 h& ? - countDown(3);+ u/ Q2 a, W# d9 [7 e3 G
- </script>
8 h. W' _) }- O7 G" W7 c) A - <!--脚本结束-->
& A& a( i5 G* R& G; p, w - </head>
复制代码 例6:
1 L# }4 d; e/ t' l# U) W8 F! Z- <head>
$ T$ ~! ?6 F6 M3 B; V0 [ - <meta http-equiv="refresh" content="2;url='b.html'"> 1 g9 I9 i$ }. n% k2 q: e# P6 c W/ X
- </head>
复制代码 例7:$ {! X( t: v! q& h2 d
- <script language="javascript" type="text/javascript">" _8 I2 ~2 v! E4 Q
- setTimeout("window.location.href='b.html'", 2000);
8 e0 e& J$ a( ~ \1 N* h" F4 E7 t - //下面两个都可以用
+ R" f( q' u- y& X2 ^: @/ O7 M5 }7 P2 k - //setTimeout("javascript:location.href='b.html'", 2000);
6 }* d0 ]% ]7 {& }& a9 A/ _# T* i - //setTimeout("window.location='b.html'", 2000);
! p/ v: }: U0 O% Z5 X- I3 U/ m - </script>
复制代码 例8:
% g p s' _+ Q- A. b- \- <span id="totalSecond">2</span>) l/ J+ J# b1 X
- <script language="javascript" type="text/javascript">
3 \& ?2 l, y' s# G+ Q0 j- X$ l - var second = document.getElementByIdx_x('totalSecond').innerHTML;
' s7 E o+ l7 m5 B - if(isNaN(second)){
( n- s+ ]- Y% v* m: G4 I9 M' t - //……不是数字的处理方法
: Z) V6 c& \# b; C0 u6 M - }else{
- J0 V' s3 Q. ]/ ~! F. F; ] - setInterval(function(){
( f8 w) u' o( \, p - document.getElementByIdx_x('totalSecond').innerHTML = --second;
' o- d: k0 w" ?; c v1 Q. U4 Z5 c0 m - if (second <= 0) {& I, m( I2 k2 r! a( d4 E
- window.location = 'b.html';6 R" Y; |3 R9 e! W: e! g2 v
- }
* |/ [6 y6 h# x& p/ x - }, 1000);7 M9 N8 _$ {# X$ D9 t$ k0 p' J
- }
w5 _3 e, G% n" l& N5 k) q - </script>
复制代码
4 l) ~+ W j4 M$ L: X4 L0 V8 `! W; S$ Q& Q6 S
+ S- J5 I& N1 {, j6 _: ^& F
|