1,只执行一次的定时器 % u( m9 C1 {4 s$ |5 [9 o+ b5 h
- <script>
6 T9 z+ M9 i" b$ z5 ?* a7 m# W - //定时器 异步运行 ' \) ]7 x o8 w8 Y" ?
- function hello(){
5 q$ q( s+ B& d, W2 o9 s7 O, R, X' i - alert("hello"); # ?# H$ n5 b9 }% B! T
- } + e# z; {% q- `+ k' I, D
- //使用方法名字执行方法
9 N _5 F: d1 p5 ]/ i) t - var t1 = window.setTimeout(hello,1000);
. \5 m: _' \ C1 N1 u& Z - var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法
M# o& }8 w$ C - window.clearTimeout(t1);//去掉定时器 2 F. G2 q4 I( S1 u3 f9 J
- </script>
复制代码 2,重复执行的定时器
6 v8 x" c$ o1 P/ I- <script>
/ z& J- C4 F I - function hello(){
" Z3 y7 j" @+ P+ b7 B8 q s( U - alert("hello");
/ V0 Q* K1 j8 ^ - } $ L: ]4 I/ O$ a7 W
- //重复执行某个方法 g1 k0 o) W% f5 D
- var t1 = window.setInterval(hello,1000);
3 ^) C! R6 x% c - var t2 = window.setInterval("hello()",3000); $ z2 U4 X; v% ?) ~+ f
- //去掉定时器的方法 + u) L8 [( D7 S* G) J) G2 j E- ^3 \
- window.clearInterval(t1); ) H$ E' S9 n4 [( e( ~9 ~2 F4 j
- </script>
复制代码 备注: % n6 y2 X R1 A. e/ G/ v
6 A/ O$ O' t2 ]2 A如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决: % J$ `8 ?- w! g9 T) u
可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。, K9 w+ R6 P. p+ C$ t3 I2 c
2 s, k9 f3 ]# p9 w0 s
在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);$ g' X3 @) i. E. ~) h
2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成
0 k+ J7 l- i' P- v“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。! H8 H4 L9 }6 j+ I D& D8 S- ^
倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。
8 N" u$ I5 y! b3 A* f# V, b比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,
5 e: N, c9 M# X+ c# R# z8 r; I+ O则需要用到循环定时器“setInterval("function();",delaytime)” 。 获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。. _0 j' g! w, h, {; k! F' l
比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。 定时器: 用以指定在一段特定的时间后执行某段程序。 JS中定时执行,setTimeout和setInterval的区别,以及l解除方法 setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。
U3 n$ p1 ?: @$ v3 a! L# rsetTimeout("function",time) 设置一个超时对象 setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式." M O- R6 W. p. C6 j( t
setInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复。 clearTimeout(对象) 清除已设置的setTimeout对象
8 I% j! M2 S$ c d: _clearInterval(对象) 清除已设置的setInterval对象 略举两例。# p/ ~3 u# V2 E
例1.表单触发或加载时,逐字输出字符串
5 @/ v- O2 O( W( Z& c- <html>
U: T' m8 O' N( v* B( ^; ~ - <head>, ~! R3 G4 d& n* }! S( f, ^
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />" e# {, G6 ~6 z! U
- <title>无标题文档</title>
2 j5 l1 X# _- t9 C - <script language="JavaScript" type="text/javascript">6 N! ? r2 `& n( G' R+ G$ e
- var str = "这个是测试用的范例文字";
9 r; R. D/ T5 O8 V$ C# f! s- J7 i - var seq = 0;" i* T2 A- P+ d( q0 n
- var second=1000; //间隔时间1秒钟+ a2 U8 x, n( Z. F# W
- function scroll() {) [5 q/ ^$ v) `& {! P* ^
- msg = str.substring(0, seq+1);8 r# L9 M3 l5 ~! |
- document.getElementByIdx_x_x('word').innerHTML = msg;' `- ^2 G' ~- [: ]. ~
- seq++;
7 G9 _7 o2 h" O5 d4 L, S - if (seq >= str.length) seq = 0;: u( L; N: G! i8 y9 A3 {
- }
( r6 m( h0 G% K$ m - </script>
f% j3 i7 p4 {9 }( g/ H( Q8 f - </head>
% e' o2 z' U1 j( N9 L; d' E+ q( V - <body onload="setInterval('scroll()',second)">
1 @! D+ t! s# P - <div id="word"></div><br/><br/>7 I0 U! s0 |' B, |
- </body>, J2 e; ^, _3 w& ?4 I
- </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。
2 A7 ]6 p/ e6 O' n: Z- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">% {$ T7 L1 w6 ~4 Y# s( d3 Z
- <html xmlns="http://www.w3.org/1999/xhtml">
0 N% Y0 e% v9 I4 Z' n, y% {2 p. L4 I - <head>9 k) ?* u# w3 ?& k! e
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />4 j! A6 _; I+ z' ^+ h; a! Z$ q& L
- <title>无标题文档</title>; j( s2 }$ e2 v) w3 j0 r2 _9 p
- <script language="JavaScript" type="text/javascript">
" s5 ]+ ]4 V( H/ p+ h+ r2 }+ B4 Z$ n - var second=5000; //间隔时间5秒钟( F- S# E5 a2 g: S
- var c=0;, j5 {- q! k: j" v7 b
- function scroll() {
( |' J# M w; T0 `7 P - c++;0 H- U! j: C) g$ X- Y$ u4 v0 }( _
- if ("b" == document.activeElement.id) {7 \/ [' ^: R$ { o* `9 W$ s- Q
- var str="定时检查第<b> "+c+" </b>次<br/>";
, }! Q& H' y7 m# C8 s8 Y/ P - if(document.getElementByIdx_x_x('b').value!=""){
* o$ [$ h7 [: j* ~ ` - str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";
) Q, X- z. N$ Q - }
' b" L' f. n( [- y, e. X - document.getElementByIdx_x_x('word').innerHTML = str;2 Q9 H5 a6 ~/ R" P
- }
2 r5 }' o+ {. S! ?0 r9 _) j - }+ _; S6 Z% B1 {5 g) Y
- </script>% b) l/ u. _1 V( F5 s
- </head>
% z! A" S7 k( D6 t - <body>
h8 R3 W& L3 C( `, ?: ~4 G - <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>2 H i6 y" ^$ F
- <div id="word"></div><br/><br/>
, A) q1 H; ]/ W - </body>
8 H5 \0 B+ ^& W& g% t* m0 j& B) W - </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。% V! T8 m8 h; {7 ]
- <html xmlns="http://www.w3.org/1999/xhtml">( H; P( l2 H4 Z; w) k5 y
- <head>8 i' I3 w8 a b
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
2 e1 Y% Y7 S( S4 n - <script language="javascript">, M/ i h: Q5 M( |( {
- function count() {9 P7 j! x1 d4 ?+ G' |/ ~
- document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";; Q6 V- {) p* Z* G# o, }3 ?4 O4 {
- setTimeout("alert('十秒钟到!')",10000)" S8 X# Z$ _% H0 }
- }
: d8 n: M/ R$ @& T9 w! E9 k - </script>4 C0 `) U$ A; m P
- <body>* I) C) N# ?! ?: ~4 p
- <div id="m"></div>+ u$ J' S+ P4 A5 j# p
- <input TYPE="button" value=" 计时开始" onclick="count()">
7 W9 I! U' E- U) b- H: E. x# Q - </body>; g x- y( K% Z0 M
- </html>
复制代码 例4:倒计时定时跳转3 l, h" E; M9 l3 v2 w
- <html>
' p& w% G0 |+ R - <head>
7 ~; E+ G% U/ \" G8 W - <base href="<%=basePath%>">' ~ f1 \/ K: o Q1 f% I% }, Z4 k
- <title>My JSP 'ds04.jsp' starting page</title>
1 r; I. Y2 h' [2 t# r - <span id="tiao">3</span>7 S+ {: e" h7 c. W/ X+ M
- <a href="javascript:countDown"> </a>秒后自动跳转……; w k; M$ r. u+ Q
- <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>( E; R5 W1 Y6 _4 z% _! A
- <!--脚本开始-->
! }& e @. ~# z' M7 e# M+ @ - <script language="javascript" type="">+ w7 J: V& Y1 B! @& n
- function countDown(secs){, e* n. n3 M+ M8 q
- tiao.innerText=secs;- [) E: c5 t4 K7 Z4 o! V+ v5 i* m
- if(--secs>0)3 J. y: @, F# H# w2 u4 h! E
- setTimeout("countDown("+secs+")",1000);; [0 Q$ d0 T* D; y! ?# e
- }
) H1 b6 g! y" q# {3 {$ B - countDown(3);
# R& d' Z6 k5 q+ k$ [- n9 l/ F - </script>
6 V4 \8 Y: u( B) z/ |" s4 Q/ S! a - <!--脚本结束-->2 v0 ^. h- Q- j, i
- </head>
复制代码 例6:7 B- F9 v0 {4 ~5 H5 W
- <head>
- Z t$ K$ k% f) y - <meta http-equiv="refresh" content="2;url='b.html'">
! I! I7 X: ^" q! h# x - </head>
复制代码 例7:
% f* t4 c5 m3 F1 C {- <script language="javascript" type="text/javascript">
# W3 W. _5 a& G. }# y* O - setTimeout("window.location.href='b.html'", 2000);
9 g, l- F3 w4 E8 Y$ D% Z) ^ - //下面两个都可以用
4 K# i4 J. O; z* N4 U0 V/ d0 ]1 h - //setTimeout("javascript:location.href='b.html'", 2000);
( w& K v- a, W5 t. v0 d - //setTimeout("window.location='b.html'", 2000);: A( T# }4 L/ @ p/ P6 D
- </script>
复制代码 例8:
/ q' B% B; K& N3 t( G( E0 v- <span id="totalSecond">2</span>) t* t* c w1 V Z/ Z8 I
- <script language="javascript" type="text/javascript">! w. e9 D( `7 h" C
- var second = document.getElementByIdx_x('totalSecond').innerHTML;" [, s9 l( \( n$ v( s _
- if(isNaN(second)){' p+ b0 ~, h: A; a% g3 H
- //……不是数字的处理方法
* W5 W" |- Q3 @ - }else{* A8 u) o3 V w: v' g; d
- setInterval(function(){
* _- o1 q5 _0 t5 k) l( @# O - document.getElementByIdx_x('totalSecond').innerHTML = --second;) D% L" K' O( e
- if (second <= 0) {
& ~$ r" F, T8 S - window.location = 'b.html';. q8 Z, H3 a' G0 J2 w, w
- }- c1 p# D C# k$ C7 M
- }, 1000); q5 K/ s+ }5 x8 z: X, `
- }
8 x0 v2 D( Z! w# q7 G9 H - </script>
复制代码
7 h0 P8 J n9 c, p: Q# `/ e% b
8 t$ ?' B- F5 ^7 o
' {, U+ Y; S5 Q/ b. x |