1,只执行一次的定时器
) W7 A+ c; P% i; s- N$ m- <script>
$ @+ s Q1 E- K# \6 V6 b% k - //定时器 异步运行
* b. `* k! S* a( o- s4 o - function hello(){
r1 ?; J6 ~! s' j - alert("hello");
4 o( {0 d4 B& ? - } 0 N! I( i/ _9 x/ [- c
- //使用方法名字执行方法
5 |: _4 J" D' Q+ Z$ R: D* m q - var t1 = window.setTimeout(hello,1000);
f/ r- i! n5 R! F' I$ l8 G - var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法
" F+ A# Y/ X; @$ Z+ R8 l; g - window.clearTimeout(t1);//去掉定时器
3 M2 a- o K) d- q - </script>
复制代码 2,重复执行的定时器 2 |) m5 u8 I, r: q- |/ n/ B4 Q
- <script>
2 Z: f6 {; ]( ]4 Z, f/ f - function hello(){
* |& U! R, e4 p* t - alert("hello"); ) h7 d* L" ?) L3 W0 g
- } ) O# a: ?2 u' |/ c
- //重复执行某个方法 9 M6 k. d5 v, a, R
- var t1 = window.setInterval(hello,1000);
0 w3 ?. b$ P- J* \0 ? - var t2 = window.setInterval("hello()",3000); & w# d5 u' I' r* \9 i4 O# o E' l
- //去掉定时器的方法 * F" C. c7 k( I- Q3 N
- window.clearInterval(t1); 3 n/ k# R2 }+ B' ~: z9 j
- </script>
复制代码 备注:
9 A% \" V5 z) N! k& ]/ [4 J5 T) u* a" R8 g
如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决: $ u X" U" B, f8 L4 t
可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。2 q9 J5 x; @ @" f9 P: X
8 S1 U0 t5 F2 d1 g! d4 @7 r" W6 m0 g在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);
% o( ]* `3 \: _6 a: }2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成
, X9 b( u. q8 H9 p& C“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。
0 i) Q7 {: j$ u2 W$ ?& J$ c, {5 L" c 倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。
4 t2 s3 x5 z# z7 W3 y9 U1 E& w# G' T比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,
; `6 r) k3 _: R8 Y则需要用到循环定时器“setInterval("function();",delaytime)” 。 获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。# ?4 B' G4 w8 x& l; ?' k
比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。 定时器: 用以指定在一段特定的时间后执行某段程序。 JS中定时执行,setTimeout和setInterval的区别,以及l解除方法 setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。( W8 h/ _3 s, L5 q# Y% e
setTimeout("function",time) 设置一个超时对象 setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.
! ?2 c3 F3 U* CsetInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复。 clearTimeout(对象) 清除已设置的setTimeout对象6 f; m/ |$ O. E& M8 |/ m
clearInterval(对象) 清除已设置的setInterval对象 略举两例。
. y8 Y( `# m5 E, ]例1.表单触发或加载时,逐字输出字符串 8 y: x4 O5 _- Z8 o: p
- <html>; f/ t4 o$ Y8 e9 x* t
- <head>' v8 ]) C6 m5 W9 a3 h R0 h2 A8 F
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />$ }6 K: Z0 y* S# r/ f$ v( @5 o
- <title>无标题文档</title>
# z7 l5 Y/ G* H5 r% r - <script language="JavaScript" type="text/javascript">9 \- o6 D0 ~0 m- N, S& R$ T
- var str = "这个是测试用的范例文字";
" u; v/ P7 L5 t; u8 f - var seq = 0;4 M( P1 q' E$ I9 R2 Z1 }
- var second=1000; //间隔时间1秒钟
5 i- c- S' S3 @! W2 W& Y - function scroll() {/ i h1 G2 k1 s: x& ^( C
- msg = str.substring(0, seq+1);- c+ m8 f% Q0 y+ }: i$ F6 o
- document.getElementByIdx_x_x('word').innerHTML = msg;
; u6 Z8 }% T8 C - seq++;
# K- @- M, c. p7 u$ u* Z; ~3 O - if (seq >= str.length) seq = 0;
8 l; x: |- E* Q1 d( M2 Q - }
G: _% j5 f2 Y. \# U) A - </script>
; e* I0 X P9 Y! w- Y9 r - </head>9 Y; s3 h' p' }# n( l1 S" }+ z
- <body onload="setInterval('scroll()',second)">
1 j# n# F, B6 _! t2 ^ - <div id="word"></div><br/><br/>7 y) n4 q% u Q8 O8 g
- </body>' Z, a; p( C- F$ _
- </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。, }( V; m* M- O1 {" \; T: e
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
! L" S6 e1 P3 A. o# D - <html xmlns="http://www.w3.org/1999/xhtml">! k, L! Z& i( A }
- <head>$ N! `; N5 y/ l( K' Y H, L% N
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
N- C- ]- Q0 P5 n) M/ q! x0 h - <title>无标题文档</title>
& W3 L/ c, |1 x9 E% k. l - <script language="JavaScript" type="text/javascript">8 n6 X6 I* \9 q& \! E% T8 ~+ j2 h
- var second=5000; //间隔时间5秒钟' r5 I. k% v, Y& L1 e6 _* L0 s
- var c=0;! v" }6 i+ n# P+ z( t
- function scroll() {
2 c4 w$ P' u7 k* ]- U - c++;9 v$ c& c0 ]; i, s
- if ("b" == document.activeElement.id) {
6 f' t. @$ I( n1 B. X - var str="定时检查第<b> "+c+" </b>次<br/>";
( f" f$ g, _3 r1 s8 W- l, v5 ? - if(document.getElementByIdx_x_x('b').value!=""){' X$ \: o) ^8 C$ C4 `8 X. g
- str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";/ |& V+ U2 T1 c5 }" L& J3 N
- }
8 k6 _+ b6 M4 W - document.getElementByIdx_x_x('word').innerHTML = str;
4 l; }) d; _- g. f5 q' n - }
& l9 k* {8 l7 S$ N5 E - }
+ J! _- R" _% [8 j' n - </script>
2 ^2 {: ~1 Q. ]' M: f; h - </head>; {/ R7 Z" m3 w; }' {
- <body>
A% {' Y) r$ j( f) a( Z - <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>1 d5 o( T& Y# }& G N
- <div id="word"></div><br/><br/>2 G5 p* f/ U$ I( d* C
- </body>% K y2 U! ^/ d4 G2 P7 p" s$ }. y( }
- </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。
+ Z8 u3 O) l$ L! L- <html xmlns="http://www.w3.org/1999/xhtml"> d. k; P7 g' g9 K- l
- <head>
5 k) t4 ^& O; |0 c - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
! H" @% a- N. R* g - <script language="javascript">) \9 O' i3 e9 w. g( |3 N$ e, z
- function count() {
# `- x' c- B) a: l; _$ e - document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";
* \% O" F3 m9 g/ j+ j - setTimeout("alert('十秒钟到!')",10000)6 Z6 V9 x- d# @% K$ V( ?; _4 G
- }/ x$ m+ D) d. N' ?: ]6 }
- </script>
3 c2 i, `2 R: l7 E) {( f5 q3 y) j - <body># E0 \% Y; S+ }1 Z
- <div id="m"></div> y. i* p- O5 W$ h/ o
- <input TYPE="button" value=" 计时开始" onclick="count()">
. P: E, n- |8 s6 t- J- [ - </body>
1 V7 M" K& y M4 B) H1 b - </html>
复制代码 例4:倒计时定时跳转
" H1 u: |: S p: J) W0 t$ v! Z- <html>' j+ z* m/ K/ m; s0 _
- <head>/ J1 S. j/ }6 J4 S. J
- <base href="<%=basePath%>">
1 p8 @1 x' ]6 @) n) j - <title>My JSP 'ds04.jsp' starting page</title>
8 d* M/ [; M6 x% W% k. g/ Q2 t" a - <span id="tiao">3</span>" j+ v4 p6 [# ~. W, G
- <a href="javascript:countDown"> </a>秒后自动跳转……9 ]2 @( ~$ N6 i7 k( A" n# L( B
- <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>
4 c5 b7 h3 w Y% P- f( \* z. W- C - <!--脚本开始-->/ A5 z6 z4 E8 c+ |- L% l# p
- <script language="javascript" type="">: A' F4 R* Q4 d( J R, A _
- function countDown(secs){
+ `" J4 y7 O% h u: S/ G - tiao.innerText=secs;* w( T' P9 D3 R4 ~' P" K, G% P4 |
- if(--secs>0)( w ?5 @0 ?! l5 H8 o# z$ I
- setTimeout("countDown("+secs+")",1000);! z/ c7 L2 f" S; q* ]
- }% p9 d+ N. Y8 X2 o" ^0 I
- countDown(3);+ a* E' e5 v2 t+ S/ M
- </script>
7 C# u: w0 {0 K - <!--脚本结束-->
/ s) O- _+ ?% H# d - </head>
复制代码 例6:6 r7 T# ~, S7 U/ m$ S( E5 l @
- <head>
7 T$ B# f6 T# r; r. I8 ?! m: Z - <meta http-equiv="refresh" content="2;url='b.html'">
3 j0 z9 U/ q* m1 a3 i( o9 g - </head>
复制代码 例7:
. W6 k. a; `" t3 |) L- B+ _: l- <script language="javascript" type="text/javascript">6 l( J& H, s2 |' C2 l
- setTimeout("window.location.href='b.html'", 2000);2 C5 c) t x( c
- //下面两个都可以用. ~* Z, ?2 n: \; n9 D: q; k( B, b
- //setTimeout("javascript:location.href='b.html'", 2000);
0 I- `4 {! _: m' I" x0 o/ S - //setTimeout("window.location='b.html'", 2000);
* G5 @( h$ j2 v( l& m F r+ r+ g - </script>
复制代码 例8:, j/ _; ?8 V. u/ [2 c- \, l+ q: V
- <span id="totalSecond">2</span>9 X, _5 s$ ]* P
- <script language="javascript" type="text/javascript">
0 l2 \4 Y4 n5 ~" X8 m - var second = document.getElementByIdx_x('totalSecond').innerHTML;1 n5 q# `7 U4 ~6 E1 w. x# F. L
- if(isNaN(second)){
& L j$ c3 w) a, I - //……不是数字的处理方法$ {7 f6 U9 A- s4 _5 t/ i; B5 }
- }else{
0 U0 d/ u3 E" b/ }0 Y3 g' B - setInterval(function(){
% ?" l2 W6 O0 m: A7 h$ H& v, G - document.getElementByIdx_x('totalSecond').innerHTML = --second;6 r* T: G8 ?9 t ?' n4 O' O
- if (second <= 0) {
. h5 h; h3 Z. Y - window.location = 'b.html';
. h r% x5 C- L' l2 C& M( v' J - }
2 h; L& F/ \' _. P. Q T - }, 1000);: I" F0 r: X4 C+ t5 k
- } 8 M3 G. r2 m% Z8 F# m" J3 {& J( X
- </script>
复制代码 $ |! c3 K1 `8 u/ B
: S0 I+ H7 H/ g. v
, g; l5 z& J# } W4 \0 s: m5 Y- e8 J |