1,只执行一次的定时器
9 O9 y% i/ _3 \6 _+ P9 ~- <script> 5 Q' K1 y- B/ v( |# o
- //定时器 异步运行 , {9 G3 v! q" c' @+ h5 a
- function hello(){ # V4 o: v) r% b( f! I$ P/ n7 p
- alert("hello"); % E- Z1 f& D0 ]6 u
- }
: u" ~9 Y0 g2 `" T9 k4 C; Y2 b - //使用方法名字执行方法
/ v2 T4 Z$ e" b8 B. f - var t1 = window.setTimeout(hello,1000);
1 O3 C- i# l$ a/ n7 p - var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法 / ~9 I, E& q9 o7 R
- window.clearTimeout(t1);//去掉定时器 6 I3 I; e( C2 f$ G. ^7 l
- </script>
复制代码 2,重复执行的定时器
* t j0 b: [& I$ O6 s- <script> 6 J4 x1 ?. `* J0 j: c
- function hello(){
6 A% i, G% y3 N& Y/ C - alert("hello"); 6 e3 a1 c8 D$ D4 k+ W- t% l
- } % x5 l3 h) z* w, k' c
- //重复执行某个方法
$ {/ P# B# n0 c# {8 ~) O - var t1 = window.setInterval(hello,1000); 4 v) ~1 Y. c0 ^
- var t2 = window.setInterval("hello()",3000);
?3 t0 _ ` z- E& p5 s* R- z - //去掉定时器的方法 1 ?# p, n, `$ K6 C: ^8 K
- window.clearInterval(t1); " ?+ T& w' l% @% ` w
- </script>
复制代码 备注: ) I" _" C) z, J4 s
6 J$ h, j( _* x1 F, H如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决:
9 o7 @$ K& d5 t$ F9 f可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。 T2 K& N- i% Q% J/ K
9 U! L4 x4 C& u: a6 ?, }9 `
在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);5 R6 F0 y3 d) W; c7 ]& ?9 G/ b
2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成
# `3 @& v, L. _# _“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。
4 v( j5 ]/ m% a! H% e* Y 倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。, L. I# H- G8 I- u' l: z4 ^" z# }) E* c
比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,
+ B6 O9 v7 f4 l, O, L4 @; O则需要用到循环定时器“setInterval("function();",delaytime)” 。 获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。9 ~! s, [% H) [
比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。 定时器: 用以指定在一段特定的时间后执行某段程序。 JS中定时执行,setTimeout和setInterval的区别,以及l解除方法 setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。
9 o. i& u6 o5 {2 b: W2 WsetTimeout("function",time) 设置一个超时对象 setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.% G2 V, C- I4 o! @$ N$ y; k; `4 v U
setInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复。 clearTimeout(对象) 清除已设置的setTimeout对象
% q7 p* }5 h7 C f+ yclearInterval(对象) 清除已设置的setInterval对象 略举两例。
+ U5 W7 k2 {! F例1.表单触发或加载时,逐字输出字符串 * F' D9 J1 t2 Z
- <html>
! Q" ^0 f9 K5 e" g - <head>
- W1 V) }( g: B, i. v - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />2 m [4 Q5 [, r9 S% Q
- <title>无标题文档</title>
1 [0 }- V" Z$ _% Y - <script language="JavaScript" type="text/javascript">
0 K" g3 ~! g& D, p- U - var str = "这个是测试用的范例文字";
2 S) X8 R* `. _6 ]. C. E - var seq = 0;
* J0 I$ y0 u8 f3 l& O& h1 \ - var second=1000; //间隔时间1秒钟! s7 G! [% h7 \( f/ H& D
- function scroll() {
9 r- o+ S* R. r8 `9 f! S% k1 j - msg = str.substring(0, seq+1);- m% U; ~5 X( ?% z
- document.getElementByIdx_x_x('word').innerHTML = msg;. r# O; _/ l/ h" h. Q4 t
- seq++;
& r6 h4 A/ q; l5 M - if (seq >= str.length) seq = 0;
( m0 g- [# G6 G( _$ g1 c - }
: r% p; A; b$ m$ l$ G. Z - </script>, Y; |5 v0 L3 j! `2 j$ K0 I# B
- </head>
! f0 p W' G; K u- Q" j - <body onload="setInterval('scroll()',second)">
" y) h' K) H2 d+ w. J3 x6 V+ e - <div id="word"></div><br/><br/>8 \( E: J+ e3 d
- </body>$ V! m& p4 j5 O. K1 o- k
- </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。
4 S& T8 c8 N! T9 |; r- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">/ Y# O$ h5 M* i
- <html xmlns="http://www.w3.org/1999/xhtml">
& ~* N- A' W! j5 }) R; t( ~+ i* j - <head>
8 ^) n" h! x* n8 ]0 F( u - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />6 a5 [' O( Y) v4 z! L: G% n3 }$ @
- <title>无标题文档</title>1 n8 X* d% R i8 W
- <script language="JavaScript" type="text/javascript">0 i, {6 w8 @( L# V3 _
- var second=5000; //间隔时间5秒钟 L4 D* l1 y- E) Z8 n
- var c=0;
7 M& p' O2 I0 {' q6 ] - function scroll() {& \$ F1 K/ s: h5 ~6 ]1 f
- c++;/ ^! g1 E4 x( _% n) |9 ?: w
- if ("b" == document.activeElement.id) {
) w: H% U5 J1 `1 O% n - var str="定时检查第<b> "+c+" </b>次<br/>";
( O/ W9 m( I8 c$ D - if(document.getElementByIdx_x_x('b').value!=""){
' G. Y `2 i8 p7 t; S - str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";" v- x( m9 m+ x9 d6 X
- }1 j' H- w/ p9 w
- document.getElementByIdx_x_x('word').innerHTML = str;
# M, j4 _+ f: {" I- E - }0 i: H3 ~5 i; h
- }! v3 b, m& i3 v9 w: a2 i& D
- </script>4 C y L/ a. @% p- B. W" x8 f8 S3 s
- </head>/ U7 Y. q) H6 ^6 z* x8 e
- <body>- r3 ~( j* Q3 I( [+ W/ c5 H
- <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>: p) P8 Y9 f# W- A7 _6 t" l' i
- <div id="word"></div><br/><br/>
& `9 \+ j. c, e7 z5 D1 O Q - </body> c; J1 E( P4 ?0 G% m
- </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。5 c4 V# c7 F" x2 d. ]" E
- <html xmlns="http://www.w3.org/1999/xhtml">0 y: T" I2 ~* w: T
- <head>6 X6 G0 q$ w6 x/ Y
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
, ~7 w& X9 k/ ?4 } - <script language="javascript"> _# p6 R) Q, ]1 S. z, J
- function count() {
. m4 z- A7 q" x) d6 x! b/ p - document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";! f- p8 Z; k2 w
- setTimeout("alert('十秒钟到!')",10000)# f: ]8 Y/ D" ?- _( X. i- h
- }6 x$ `2 ]. K6 e. |3 h: V4 ~5 `' f) k0 W
- </script>
3 f: F4 k5 h3 H( m- B- W - <body>
0 A; ^$ k- [3 s: n% [ - <div id="m"></div>
8 U1 f C, c T O+ a4 x5 M3 T - <input TYPE="button" value=" 计时开始" onclick="count()">% i2 W$ \4 H, m h ]
- </body>
& b+ R- f9 ? G6 z/ z - </html>
复制代码 例4:倒计时定时跳转9 C. X, |7 w8 {1 i
- <html>& P4 t" `+ P' \8 A# Q
- <head>0 b( o- ~! \" y% u+ x) C* r
- <base href="<%=basePath%>">
: j5 ]1 u* ?; P+ M' g - <title>My JSP 'ds04.jsp' starting page</title>
/ M8 }, a+ E8 m8 s3 S' e! | - <span id="tiao">3</span>
2 |3 f; K! U5 g0 X+ N - <a href="javascript:countDown"> </a>秒后自动跳转……
: \# O: T( g0 ~. \. T' v r - <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>
3 t# j9 X. c. @9 ^ - <!--脚本开始-->
# P7 f6 ?2 B# e2 C% L - <script language="javascript" type="">
$ P4 q! L2 @) p2 I; a5 }$ I- p2 g$ J - function countDown(secs){
; m6 P3 s! I6 q - tiao.innerText=secs;
; _0 ^, V7 ?( z0 N6 w+ _2 O- m0 ^; c# n - if(--secs>0)6 n. P' T7 S/ N4 [+ F
- setTimeout("countDown("+secs+")",1000);* v$ l% {3 Z$ K% |7 ?& s9 W3 Z& S
- }
4 H7 D! D0 C$ @7 C - countDown(3);) p5 ^. P3 d4 S) I7 X* Z
- </script>
v3 ]9 P) b7 V' |# b! n - <!--脚本结束-->" @2 G H& ~9 D- L
- </head>
复制代码 例6:
5 N2 L# C/ n. c2 ?+ ^: ~- <head> ( n% w# Z) i9 m4 q5 L3 a/ h7 D+ z
- <meta http-equiv="refresh" content="2;url='b.html'"> " ?: C. d% d% O4 h
- </head>
复制代码 例7:
6 E2 f; V0 W7 w: a4 r9 C. {! N- <script language="javascript" type="text/javascript">
{! y' S6 m+ s ^0 G7 _ - setTimeout("window.location.href='b.html'", 2000);! N- U- ]- Z( y) i5 U
- //下面两个都可以用
: z* x" i' h0 I# n3 H - //setTimeout("javascript:location.href='b.html'", 2000);
6 ~; ^: ^% |$ j5 f5 A1 C - //setTimeout("window.location='b.html'", 2000);* |0 j" ~3 J2 p! m/ \( j
- </script>
复制代码 例8:
' h& M, I! L3 s1 Z) s- <span id="totalSecond">2</span>
- _0 ^0 y& N/ \6 B! m4 k" U9 h) h1 I - <script language="javascript" type="text/javascript">, w' J- I: w& a- [; X! }% @
- var second = document.getElementByIdx_x('totalSecond').innerHTML;
' G W9 i8 P7 A6 u. o$ w; Q, } - if(isNaN(second)){
. w: c9 @) Q; C* t% e: Z: l - //……不是数字的处理方法
) H8 Q- w3 l- ~ - }else{1 ^& s4 d) Q! B) T' K9 e
- setInterval(function(){
/ J* E: ^ Z$ V& w8 w3 F9 O& p - document.getElementByIdx_x('totalSecond').innerHTML = --second;# Z9 s3 _) k* o G- E. i) a- o
- if (second <= 0) {! S$ q8 {: E& g" h0 i# u
- window.location = 'b.html';
! A# o7 e3 k% N- `4 p5 ]: { - }
% v/ [7 D0 M$ o4 H) m6 Y' k* P% T - }, 1000);1 M) v) x7 a2 p2 \, O
- } ( D! F2 b* o+ q: j! V6 C( h
- </script>
复制代码 ( {4 s% v1 X; q0 V4 t: s/ p; v
& |$ l E4 \! `- y
' e7 K# {' P* a |