1,只执行一次的定时器 & M, d% k& b2 ^ j9 t/ h
- <script>
, h5 P( ^% e" M. ? - //定时器 异步运行
, _' {* ]. [" }; v - function hello(){
2 Y& g1 I- G9 v3 J - alert("hello");
3 w8 h1 h* J' l/ K) n - } / n1 N' j& o% o; w( O
- //使用方法名字执行方法
/ y$ ]7 Y) d. c) F - var t1 = window.setTimeout(hello,1000);
9 l1 b$ |8 J, x - var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法
& D2 O- X4 |3 i. g, I - window.clearTimeout(t1);//去掉定时器
% ^5 f1 V Z! y. n0 E - </script>
复制代码 2,重复执行的定时器
/ q4 L! r4 N9 @/ c! E1 T+ n! C$ h- <script> 2 C+ b v4 q: T( T$ L' n+ B0 T
- function hello(){ ; P+ @5 [3 G6 f0 f, G
- alert("hello"); ( D8 G7 z- ~0 ]) g, j/ U2 B
- } . f- |/ ?& G. G. w8 `( x
- //重复执行某个方法 8 E! @/ y: G! L- g* X
- var t1 = window.setInterval(hello,1000); ) F$ k6 k6 Z: ~% V w6 C
- var t2 = window.setInterval("hello()",3000); ! X5 z+ h; @5 s! [7 j/ I, v
- //去掉定时器的方法
' M& B( C; r- `2 c. [ - window.clearInterval(t1); # U/ o9 H+ y! D4 R
- </script>
复制代码 备注: 0 x( K- f N0 `/ W: e3 T5 y
5 f+ o( h7 p+ q) b如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决:
+ v% s( q0 T$ _6 |6 ]可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。
' f( r$ u; N, l& j5 i. B; R# r; }4 T" z F! A
在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);
; g% W3 ^, W( S) p2 e/ W: g3 h2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成
% B; Z+ j4 r3 L2 z- Q: ?5 N“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。+ U7 ^; x$ e* V! E# v5 C1 O
倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。
% T3 J( b7 p6 _8 {! m a9 K0 ^ X比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,' @* U* x) C5 e
则需要用到循环定时器“setInterval("function();",delaytime)” 。 获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。
z5 _- G$ k/ N7 A比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。 定时器: 用以指定在一段特定的时间后执行某段程序。 JS中定时执行,setTimeout和setInterval的区别,以及l解除方法 setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。
& }, e; ~) m8 P+ hsetTimeout("function",time) 设置一个超时对象 setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.* I+ w/ c( t2 v" ]& j
setInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复。 clearTimeout(对象) 清除已设置的setTimeout对象
* p1 e& W8 j& k* V# UclearInterval(对象) 清除已设置的setInterval对象 略举两例。# D0 z% n" |/ w, y( Q
例1.表单触发或加载时,逐字输出字符串 7 ^* Q! J5 n8 u8 D; s Q" g. z
- <html>
+ |2 u* y; ~4 v6 _+ M, ~! f4 k - <head>
" t0 f# _: r1 h4 U; C1 r5 m9 {/ V( l9 b - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
" Y/ i* g3 C+ u5 u. h - <title>无标题文档</title>. h4 ^' H# r6 {- U9 S. v- Z* c5 G
- <script language="JavaScript" type="text/javascript">
; \& Z" w! i8 `) B. p I0 J: l - var str = "这个是测试用的范例文字";" l2 U* F2 c) [$ l0 X
- var seq = 0;1 X% f W4 {7 y I7 o& D5 {7 |/ Q
- var second=1000; //间隔时间1秒钟, Z; W$ F' v! v- @
- function scroll() {
! |" m F- A/ P - msg = str.substring(0, seq+1);7 x8 W2 f* K& O) j
- document.getElementByIdx_x_x('word').innerHTML = msg;
8 m) r6 I1 C7 ^0 r - seq++;
2 _& U7 t* U: q6 `" g - if (seq >= str.length) seq = 0;
4 l! X# n m( h: G - } l4 F7 j. u4 L! o- O( L) l
- </script>
7 K: x# M# ^. y) H - </head>- L+ d+ n1 a: U4 Y& S
- <body onload="setInterval('scroll()',second)">
8 q& E) o1 }- t, W6 v9 @- X' t( k5 w - <div id="word"></div><br/><br/>
7 I6 M- \) I# ?- \6 F8 g. @9 v4 [3 D - </body>0 T5 B( {' R D d& A. t w
- </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。) T+ R3 \( N/ N" j7 M9 K6 ^
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
9 L7 `- r' C6 b7 }0 j" t9 L - <html xmlns="http://www.w3.org/1999/xhtml">( D, ]/ b2 s: \* D v1 T
- <head>
/ V! H* k0 j- { - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
9 V! d8 G* J$ g, X: C - <title>无标题文档</title>* R9 K. }# `" T! m
- <script language="JavaScript" type="text/javascript">
" ?6 _- \& o! E$ j - var second=5000; //间隔时间5秒钟
3 t4 l `: W5 a( @ - var c=0;
( r- l/ }, c& t4 t9 F' P9 o - function scroll() {
* d" Z# `8 s, o2 m# e - c++;
5 s/ b& i4 y; L( e - if ("b" == document.activeElement.id) {+ N2 O. O' [+ c: T, O
- var str="定时检查第<b> "+c+" </b>次<br/>";7 A0 {7 o* `5 ?, D0 J7 J9 y
- if(document.getElementByIdx_x_x('b').value!=""){" H- S7 W& T5 E& Q
- str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";8 u- S& w/ D+ w) U0 ?0 H
- } y5 W0 ]7 k4 i( h& ]( m: Y
- document.getElementByIdx_x_x('word').innerHTML = str;
, q1 g9 A% Z/ p Q - }7 J% g& Z+ P, w; ~
- }
# r& y6 E. W: o: M - </script>! |6 V2 j$ V, }# H* ?# P" Z# y
- </head>
# R, B; b( w# g! v( r, p. R: K - <body>. f! s2 J* `! o5 u8 ^8 N1 [" \
- <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>
, ]. C7 S8 F/ m4 E - <div id="word"></div><br/><br/>% W6 l+ `- u0 ?; |# Q$ _! F5 I
- </body>
5 l" F# \- R2 i Y( ?- z - </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。
Q$ |. D- |8 |* f8 Q+ H- <html xmlns="http://www.w3.org/1999/xhtml">( w8 a( [7 V7 l5 U. @7 z7 u9 X+ q
- <head>+ I* E) V' ^! U% e8 H+ w- @8 B4 b7 c, f
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />& }# L1 t2 t/ w9 J
- <script language="javascript">3 D; a% o& R6 W% d; W
- function count() {7 l. j7 x b. H F, n
- document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";
0 ? ]! s7 P) P - setTimeout("alert('十秒钟到!')",10000)! U! C6 u0 A4 _, c
- }) d8 ]$ M# @3 H) ~2 r: [
- </script>
2 m6 W% M/ k6 N - <body>
/ F5 U, T7 l* ?. ]7 {3 p" } - <div id="m"></div>
1 F- f; U5 ~. P8 y' ^3 C4 Z - <input TYPE="button" value=" 计时开始" onclick="count()">6 ~( w3 [' t& _7 t7 P8 R# x' C
- </body>
3 |# V$ }9 ?" U1 t - </html>
复制代码 例4:倒计时定时跳转
) J. \8 K3 M4 A# B3 X- <html>0 P* W& i! o8 E, l ?
- <head>
/ q( Q* K% c# z- I4 P - <base href="<%=basePath%>">6 g" ? a4 j- w" u; o$ a
- <title>My JSP 'ds04.jsp' starting page</title>3 W0 _1 z% N/ [2 z# e2 g
- <span id="tiao">3</span>% i* \( z; ]2 h/ _7 z. N* {
- <a href="javascript:countDown"> </a>秒后自动跳转……
U6 e# l( Y7 f U; _ - <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>4 C' [1 R( e y, D& [( H
- <!--脚本开始-->
% R0 F% ^: v' ? - <script language="javascript" type="">
( Y) P8 s5 \" h% h/ @+ X" d - function countDown(secs){7 {* `9 r! G. \( m, e
- tiao.innerText=secs;3 ~& d# X+ C4 d0 Q$ b
- if(--secs>0)3 Z& Q7 B# H9 j
- setTimeout("countDown("+secs+")",1000);
7 B% w' _$ x4 ?. {4 t. O7 G4 O - } S3 m' J* }. l/ H$ A |& }
- countDown(3);
( d' u n& `$ {# h; O: |2 h$ ` - </script>* X1 h" Q1 C# e9 S7 U
- <!--脚本结束-->
9 x8 H F4 W" o: x - </head>
复制代码 例6:
: j8 z9 v" N5 x* N8 y+ W0 h- <head>
, y9 O4 X7 d8 m - <meta http-equiv="refresh" content="2;url='b.html'">
/ U7 h3 I3 ^# E! y* q4 Z - </head>
复制代码 例7:8 d7 C1 z! E7 J o+ C( I
- <script language="javascript" type="text/javascript">
0 c0 x5 H b( H2 _% r) y, e - setTimeout("window.location.href='b.html'", 2000);
" Z2 ?: z5 U" [* N2 `; y0 |6 P - //下面两个都可以用% i% w2 O7 c4 `' ^& D
- //setTimeout("javascript:location.href='b.html'", 2000);8 C& a9 x* v1 [. s$ l# m
- //setTimeout("window.location='b.html'", 2000);
, N* Z7 O8 @1 j# L* S6 H7 V4 a6 f - </script>
复制代码 例8:+ d! d% Q3 Z- O" @. d J6 }& S
- <span id="totalSecond">2</span>' x, I) q- }: I# t& h3 T
- <script language="javascript" type="text/javascript">
" ^* t' ?; H! Q' a9 t - var second = document.getElementByIdx_x('totalSecond').innerHTML;2 [3 k2 i" \8 G* G+ p( w
- if(isNaN(second)){
: j4 u3 T/ w: W5 H6 F! c5 |: o7 D - //……不是数字的处理方法
z1 R8 L' J( d' [: [ - }else{. I+ v6 K1 O- I! |
- setInterval(function(){& g! Z; u( t, J* l
- document.getElementByIdx_x('totalSecond').innerHTML = --second;
+ \1 F9 X2 R% [( o# z# R - if (second <= 0) {
" t! W1 n6 N2 s! K _ - window.location = 'b.html';2 n0 w, Z( p% A! b$ d
- }1 m6 l7 T( ^2 a7 M
- }, 1000);
: p$ ^$ q% F$ h - }
; Z- H3 P4 o9 F/ c4 C - </script>
复制代码 1 N* n: s/ r1 U+ n: A! n a
" U( t* C' G- O/ y7 b, f
3 u6 A% B1 @5 ]9 S$ g$ C |