1,只执行一次的定时器
: o) ^( {& U8 T) s- <script> 5 P+ h) o# B5 Z8 _" R
- //定时器 异步运行 / d Z# [9 W8 f1 n9 b5 e
- function hello(){
! P9 e0 {+ o- A }9 F! j. N - alert("hello");
9 z0 Y3 J$ L m0 y - }
$ o. c% {# R+ |7 v - //使用方法名字执行方法 ' n% n. [9 N4 B8 X
- var t1 = window.setTimeout(hello,1000);
$ W4 `. K1 g1 F3 s0 _ j. | - var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法 8 Z5 p3 l$ h# x& `4 M
- window.clearTimeout(t1);//去掉定时器 4 q1 W) K! u. k" v
- </script>
复制代码 2,重复执行的定时器 7 E9 u5 J0 P& y; q$ w7 I) t" ~
- <script>
- ?! Z7 h! w, y* C+ A" b* K. @- g - function hello(){ & c3 v2 N! r7 _
- alert("hello"); / L: t% a% S4 U G
- } ) v0 S+ o# q3 R1 f& t& [* q- z4 o' Q
- //重复执行某个方法 1 x! \8 h' y' ]2 }5 ]
- var t1 = window.setInterval(hello,1000); . @4 ]6 f7 Z/ G
- var t2 = window.setInterval("hello()",3000); ' z: P: x, u+ N. J% c: x1 K
- //去掉定时器的方法
/ ^" S7 j2 ]* P8 _ - window.clearInterval(t1); % Y3 U# r& G1 }
- </script>
复制代码 备注:
0 n8 {. }* Y. h8 w' l' U" b
: l- _0 \6 U! n3 A8 d如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决: + p5 f! O" \; z- [- \: I" m4 b
可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。
6 s$ r, U! H( Q T( y/ h- D3 V" X7 ]& r3 j* i7 Z0 d& F
在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);
d- D$ u7 Q6 i$ w: q0 z2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成
" r5 T- ]' U7 X“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。
c, p2 J3 J2 E5 r2 u 倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。
; `, h3 Z% P* |: s6 Y比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,; v8 f) l5 l K3 a' X! z+ m
则需要用到循环定时器“setInterval("function();",delaytime)” 。 获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。
& a( P8 z" \* {1 |" h( A" i: I比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。 定时器: 用以指定在一段特定的时间后执行某段程序。 JS中定时执行,setTimeout和setInterval的区别,以及l解除方法 setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。
, h) H7 M' ]" z6 p$ Y& S6 B' L- VsetTimeout("function",time) 设置一个超时对象 setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.
% d4 o. ]: U- c5 j6 `5 i1 |setInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复。 clearTimeout(对象) 清除已设置的setTimeout对象
1 D+ E' D) _8 t: j2 b, X/ L0 }clearInterval(对象) 清除已设置的setInterval对象 略举两例。$ F9 E) z9 k( v% B6 {
例1.表单触发或加载时,逐字输出字符串 . Z6 O4 x L3 k" ~8 \8 `5 G. V
- <html>
' b3 A. R8 l5 c& B; ] C1 X - <head>( r8 Q# P/ N7 |$ D( \* b
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />( o/ l' A# A% b7 L0 s
- <title>无标题文档</title>* M# N" V; C0 o7 [& e6 A2 t Z% W
- <script language="JavaScript" type="text/javascript">, h w8 q2 e. y8 d; e: h( ]( L
- var str = "这个是测试用的范例文字";
1 _# X$ j3 o) J7 e4 `$ { - var seq = 0;& N' x9 E& A7 y5 {8 [6 g7 F
- var second=1000; //间隔时间1秒钟
8 f! d) D3 N3 E3 U' w - function scroll() {! V z: W" x$ S2 `2 f) |1 U3 Y# N
- msg = str.substring(0, seq+1);6 {% A X4 m$ H6 Q6 x
- document.getElementByIdx_x_x('word').innerHTML = msg;
5 L- F5 d1 C3 ?: ]( P% K" Q! h - seq++;
% H ]$ y3 ^# l9 f6 R! l - if (seq >= str.length) seq = 0;5 O& ?, d( ~1 t# N i! K* D, ~% Y
- }
! ], Z7 j& A2 T/ f - </script>
`9 v0 k% ~- s- S9 b/ g - </head>
! k% {: M; e+ |: d - <body onload="setInterval('scroll()',second)">
3 h z3 n6 C1 O" Q$ | - <div id="word"></div><br/><br/>9 T- m( B, W0 [
- </body>' }5 x2 @5 g# [% d% P4 ?
- </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。
5 ~3 o9 f3 G. G2 y' U! }# T- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 @; c9 c; O3 R6 w - <html xmlns="http://www.w3.org/1999/xhtml">& `: v' b" V: @3 [( |) F* {
- <head>6 u3 D; v5 F7 g& J0 I
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
2 b: D; a1 E. X) U, P - <title>无标题文档</title>: q; d, _# @( [$ E
- <script language="JavaScript" type="text/javascript">, N# _5 A7 g) ^* _
- var second=5000; //间隔时间5秒钟
* d; {) Y2 N' R: I7 J - var c=0;
( n! R3 }8 T6 h( _8 m9 ` - function scroll() {
( ^. w9 e7 |. X' E9 y0 Y - c++;
; s- B- l0 U6 o! m - if ("b" == document.activeElement.id) {: p b& Q, Q6 ` B
- var str="定时检查第<b> "+c+" </b>次<br/>";
7 g2 ?6 F" ?+ d - if(document.getElementByIdx_x_x('b').value!=""){
$ O% g$ i' ]! U+ B - str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";5 M/ g1 V+ b# x5 F: r
- }. Z {; ? ~$ ?6 K0 x
- document.getElementByIdx_x_x('word').innerHTML = str;% A$ s( U7 Q1 t; \! r4 G* _, C" O4 D
- }
& o% U# g3 x; [7 |& G - }* Z. s2 C7 P& r e
- </script>: e) v. L) s+ S1 Z
- </head>
F5 f( l1 Y; a - <body>
3 B' Q' z; L+ c; W" |& |( [ - <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>& ]8 o, d7 Q4 A$ e9 J
- <div id="word"></div><br/><br/>5 r2 N: {# G. e( n& r# T! X
- </body>
( F* _' V1 D1 u9 \. b- ]) x5 c) J - </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。
" g7 ?7 T3 o" ?' ^- O3 n2 d( ]- <html xmlns="http://www.w3.org/1999/xhtml">' v9 ?2 e# C+ d# Q$ o+ d
- <head>. c# ^8 Z! W7 C: T R" d1 b/ L, _
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
7 W/ G3 w% a: A( T* l4 T0 [5 D, s - <script language="javascript">, Z9 |" P; Q( G( O1 l
- function count() {
0 ~3 x6 e' |% f" W! r! M ` - document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";
0 W7 n C% e+ i/ w - setTimeout("alert('十秒钟到!')",10000)
5 t; D: Z! p9 q( s( q' b6 R - }
5 Y, R6 N; ~, D! H - </script>7 [0 r; f+ B; c9 c5 q
- <body>% I) T8 P. W3 B7 j0 k
- <div id="m"></div>
! H6 n }; z7 ^0 i- i# S - <input TYPE="button" value=" 计时开始" onclick="count()">: j- S+ b* W/ c# |
- </body>: J* M; I4 ~) x( Q8 I3 n
- </html>
复制代码 例4:倒计时定时跳转4 r1 R( O+ g8 K. z+ g# {
- <html>
x" J; ^' J; | k4 r; ` - <head>
$ I- x& q9 \+ P) l/ F* g& Y4 n3 M - <base href="<%=basePath%>">9 ^( n( z `- t7 |
- <title>My JSP 'ds04.jsp' starting page</title>
5 G. \, n: k; e: ]6 } - <span id="tiao">3</span>
0 L8 c9 y& M4 M+ P5 H5 n; M- o7 z - <a href="javascript:countDown"> </a>秒后自动跳转……* F4 w1 s, y6 V) q' B2 K ]5 K# E
- <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>
$ J6 D; S1 i) _% b' M! B$ J% ~ - <!--脚本开始-->+ j0 O5 J: }4 ^# b1 H1 e+ D1 L
- <script language="javascript" type="">/ I9 z9 C6 u" S1 Y' N8 `" H
- function countDown(secs){
) F: t, X7 n, F1 X - tiao.innerText=secs;5 I! Y8 q/ E9 ^' i$ A
- if(--secs>0)1 t0 v7 l4 A( _4 H8 X. D
- setTimeout("countDown("+secs+")",1000);
0 n$ z! P: h) d, c - }
; z; @2 X, c% ~; W# X6 D - countDown(3);, i, b1 l! k4 [/ F6 x" ?
- </script>5 s3 e5 c! z! _( t8 {8 k8 o; W0 z
- <!--脚本结束-->
, C P, D: Z7 |( I8 T) F - </head>
复制代码 例6:
, c$ `1 w6 y9 j" Z- <head>
5 q- @# K) R& Z8 Y, @ - <meta http-equiv="refresh" content="2;url='b.html'"> 5 _% Q8 W; J( R) `1 O& K7 p
- </head>
复制代码 例7:
+ S) D W" x ]8 H2 S- <script language="javascript" type="text/javascript">/ }$ `* ?) J/ ^& P2 Q/ b* Y. W
- setTimeout("window.location.href='b.html'", 2000);
, G- I' K/ w& r5 q6 @ - //下面两个都可以用
9 O, `8 l; Z. i& R1 {( _! s - //setTimeout("javascript:location.href='b.html'", 2000);9 p$ ?" d7 q) `. O6 a; i" U& m
- //setTimeout("window.location='b.html'", 2000);
# S; `7 [! ?2 [7 N8 i; l; _ - </script>
复制代码 例8:
# I6 M8 I; n- l+ Y! e- <span id="totalSecond">2</span>
2 U, c- v4 o; n! F+ ^ - <script language="javascript" type="text/javascript">' d* R p- B" E# J9 s' G( R
- var second = document.getElementByIdx_x('totalSecond').innerHTML;
- k! D& w6 J( C* ?$ z - if(isNaN(second)){7 o) U- T5 u/ p! s* D1 o2 A& B& Q
- //……不是数字的处理方法) P% }9 q1 S7 b; u6 v: j C* d
- }else{
# v. ^ O& q( D2 h! m3 H3 [" u* m3 s - setInterval(function(){& H5 ?, H$ h$ O$ f) u" g
- document.getElementByIdx_x('totalSecond').innerHTML = --second;
2 c3 F6 j ?' u3 }& O% H! Q - if (second <= 0) {
/ V& K" k* S" O" v - window.location = 'b.html';
, `! ?# U/ j# v! r - }
# e9 p& D2 n! T' N/ W - }, 1000);8 o, g* |8 S% ?4 E
- } $ D5 P+ O1 s( Y. N
- </script>
复制代码 . d7 I% F6 S; s# o8 C7 N
4 W$ t! n" p3 Q! S" ^0 S
/ X c# C0 Q3 q0 S! ]# q
|