1,只执行一次的定时器
+ H9 q& ?2 h' C0 v( {) b: a# o- <script>
) X( J& i( O/ |3 g9 ~9 O4 i - //定时器 异步运行 4 I" W7 A* u* r9 d+ s+ I+ @
- function hello(){
& f$ n/ Y) @& t - alert("hello");
4 b; e6 T3 ?8 {9 I - } 2 V& \. q( E; J/ u; d# Q2 G
- //使用方法名字执行方法
& B) \& h8 W& D" X! Q - var t1 = window.setTimeout(hello,1000);
7 ]7 ?# w6 R9 Q: B - var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法
9 g2 l$ M" ]. M& H - window.clearTimeout(t1);//去掉定时器 6 ?- u2 |3 u( }% `/ ^
- </script>
复制代码 2,重复执行的定时器
' n1 Q# P, O! _+ e# r- <script>
( {! \0 [. x, c+ R$ G - function hello(){ 2 s! S: h, [' `% a) p. f# ?
- alert("hello"); 2 d# v% r+ m7 H) W
- }
' |7 T0 N8 \. y: W - //重复执行某个方法
: B! I6 N* F0 G* S - var t1 = window.setInterval(hello,1000);
* R$ g) E) @3 v; B0 { - var t2 = window.setInterval("hello()",3000);
# t" x) O. y0 U" C0 ?+ ? - //去掉定时器的方法 0 C6 I( [2 C9 U5 O# C4 _
- window.clearInterval(t1); $ d: E5 Q# z! e& u G
- </script>
复制代码 备注:
8 \( s$ }# J3 S0 z' v, Y6 V7 V) c( ~3 [" N7 [! ~" n. J T
如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决:
. b0 `: Q/ `7 ^- T0 {& F( H: W可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。3 b! \, P: }; c7 B
8 G. E: n% _2 q- v
在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);
. P2 F. v7 Z O2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成' g1 O5 W# y- P! z
“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。7 T) @3 K6 @- Q Y: ?! e8 ^7 y4 z
倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。
# J/ E- i% g) _6 r& f3 _9 b4 C; p- z# U比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,! y+ @; {& S. p+ I- ?% W; b" ~
则需要用到循环定时器“setInterval("function();",delaytime)” 。 获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。
! h5 }/ j+ f$ \比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。 定时器: 用以指定在一段特定的时间后执行某段程序。 JS中定时执行,setTimeout和setInterval的区别,以及l解除方法 setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。0 D: o) Z! S. {( s2 x) z+ Z
setTimeout("function",time) 设置一个超时对象 setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.8 r* ^* ? j# A: c
setInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复。 clearTimeout(对象) 清除已设置的setTimeout对象& c) ~' m7 C& f
clearInterval(对象) 清除已设置的setInterval对象 略举两例。
1 [& `$ [6 `# W例1.表单触发或加载时,逐字输出字符串 , N2 Q4 {# Y" Y! c# s
- <html>
3 z, C) q* {& w8 W - <head>
+ Q) M2 h4 i& k, ]+ g" r" ^ a - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />0 x% W" F1 h* f
- <title>无标题文档</title> B! {$ _; q* g. x" [4 [( |- s
- <script language="JavaScript" type="text/javascript">+ `. Q5 i* V, k# v. b$ I* ~1 A
- var str = "这个是测试用的范例文字";3 F& c! F( k3 Q7 ^+ `) K
- var seq = 0;- P. y, t6 c3 w: x9 v0 Q# J
- var second=1000; //间隔时间1秒钟
* K* x9 p4 I! u1 d - function scroll() {3 {9 v% f& g7 J7 `
- msg = str.substring(0, seq+1);' l! i. g% W: U0 O/ K9 j# z
- document.getElementByIdx_x_x('word').innerHTML = msg;5 f! d& B- h7 C9 y
- seq++;0 K' u$ H% E$ E( W
- if (seq >= str.length) seq = 0;* ]$ r5 w U( m2 V
- }
' {6 p" k& H R! l - </script>) D- F" y# l. x$ i: ^
- </head>
/ W7 x& m, s m- L9 |' B, | - <body onload="setInterval('scroll()',second)">8 O4 X/ Z' l) t5 Y. E* p+ t
- <div id="word"></div><br/><br/>& s# b6 d g* r6 w. }5 Z
- </body>/ t0 n* O/ h( t! h! n! s* C
- </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。
0 k) l& e3 Z/ P( N- C; j! n- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">5 p: E# U: `6 P8 `% v
- <html xmlns="http://www.w3.org/1999/xhtml">
% G/ S% z# p5 D* T - <head>
2 G$ }+ z. h7 R( D) a - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />3 ^2 K& D/ h; M9 S
- <title>无标题文档</title>
+ f4 C7 }) t& c - <script language="JavaScript" type="text/javascript">
/ ~% V1 [: k7 g) C/ h - var second=5000; //间隔时间5秒钟6 J l9 [0 m# Q; F" b$ F
- var c=0;5 |) e* _$ u4 z/ T1 i" o
- function scroll() {7 Q. S3 J- c8 {( s% f {" g% F, G
- c++;
! Q, x$ s/ [8 B- A/ P - if ("b" == document.activeElement.id) {
% ~0 F6 p( L9 R. k - var str="定时检查第<b> "+c+" </b>次<br/>";
% P9 g) _# z' D - if(document.getElementByIdx_x_x('b').value!=""){' V( [2 F% r3 b2 b8 {
- str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";
1 Y, i2 r9 j" q4 t2 ` - }9 Z. d+ v( X4 u" X# _
- document.getElementByIdx_x_x('word').innerHTML = str;
7 R2 z5 B6 \) ^/ z2 z+ @' ^5 L& j9 F% F - }
4 W6 e: B" j) B% z H- r - }
9 ^+ i+ W7 T) r- b9 e, C! A4 k - </script>: W) j# c. Y& D
- </head>
2 C- e* K( ?) E - <body>& f8 t4 q/ o0 S
- <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>
* t7 i& m2 g& B! S- k - <div id="word"></div><br/><br/>
; c1 {$ g$ [% f5 x - </body>
* T$ w X* r, b3 L. X" G - </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。
3 ]- F5 u( B. q* A0 E4 e* K" E- <html xmlns="http://www.w3.org/1999/xhtml">2 e, F& }4 E2 P
- <head>, A f2 B9 r8 @9 A- W3 v! g
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />, z0 X! P; E( ]# Z: J
- <script language="javascript">
7 L# h2 r. _ G+ Z( p5 _ N. M - function count() {
& E- F2 C5 q/ O* l. m8 d - document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";" t. B0 l# s! @3 j: v
- setTimeout("alert('十秒钟到!')",10000)# r; Z! A# o9 ^2 p* E& Y
- }
* e# a; B, g/ X/ G" f - </script>
- z% ?+ Y/ q) d, l" n. O/ t- J% ? - <body>
/ [% \1 c0 w# `0 w, T3 S - <div id="m"></div> Q8 `. b" Z9 K3 U& ]
- <input TYPE="button" value=" 计时开始" onclick="count()">
4 L& p- N& W& V- T9 [# F - </body>
0 N6 m. M0 b% R8 g5 G. M# M - </html>
复制代码 例4:倒计时定时跳转
0 a3 D2 B( r2 |7 k- <html>
3 Q2 C6 J W: j N4 e - <head>' Z6 O7 f7 U9 J! N
- <base href="<%=basePath%>">7 m+ O9 o- `8 A9 L7 {# S* z
- <title>My JSP 'ds04.jsp' starting page</title>
: E: n8 E) @0 M9 J v - <span id="tiao">3</span>% `: h& n ]! y& P6 g
- <a href="javascript:countDown"> </a>秒后自动跳转……
C1 [) [9 `) V, s - <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>
) D/ S6 s: T& l) f% l' D! X! X8 J- c - <!--脚本开始-->
, M. \3 H' e- d1 o - <script language="javascript" type="">" g6 p1 b) j& E2 I J' T' l' N* _
- function countDown(secs){
, Q! j' n+ i- g - tiao.innerText=secs;- W/ U I5 V5 _# J& v9 j
- if(--secs>0)2 k! |6 C, \. k' A
- setTimeout("countDown("+secs+")",1000);
) x4 r* ? l" W8 u$ L5 ~) k: j - }
1 J. s; @. g3 |( x+ ]; D; {" E - countDown(3);
6 E# s4 P+ q( A5 z5 `) m* ` - </script>
8 T" D" h3 a, R, ?6 k5 }8 R& k - <!--脚本结束-->
. m& M' H* D/ K2 ? - </head>
复制代码 例6:+ A7 c' y! ~7 ~9 W% E* y
- <head>
" z A D0 z* `( k. w T" a8 q - <meta http-equiv="refresh" content="2;url='b.html'">
# @: _ U# ]# G - </head>
复制代码 例7:
: E9 d: W& G1 c- <script language="javascript" type="text/javascript">
& F0 w+ n/ e! K3 h& R - setTimeout("window.location.href='b.html'", 2000);
' Z7 z- ? c/ [1 Q - //下面两个都可以用
7 j9 p0 B; Q F1 c" [ - //setTimeout("javascript:location.href='b.html'", 2000);
4 S. U! Y$ ` h0 k9 R4 { - //setTimeout("window.location='b.html'", 2000);1 u% D, l$ {1 e0 O4 i( V D$ T% m& P' e
- </script>
复制代码 例8:
2 i' L" j$ u( H% y- <span id="totalSecond">2</span>8 Z8 y* [7 f; t3 S
- <script language="javascript" type="text/javascript">+ X, V+ A0 s, h$ {1 W7 l2 \
- var second = document.getElementByIdx_x('totalSecond').innerHTML;
) i0 {/ u6 s! W3 H8 t8 o - if(isNaN(second)){
2 w. s/ ]! K$ n$ m' s - //……不是数字的处理方法
' z; Y. {+ b) c1 w! p! @+ T7 }6 z - }else{
3 ], f7 H0 ]3 A7 `0 M( [ - setInterval(function(){: P/ ]0 O7 l9 D4 E1 p$ k, C9 ?
- document.getElementByIdx_x('totalSecond').innerHTML = --second;$ @& W6 W, b/ z' x2 W+ ]
- if (second <= 0) {
) q( ^& a: p- q4 N( i' u X - window.location = 'b.html';2 Q3 ^4 j- Z& b4 ?- [6 B( [
- }0 A7 |0 m* l* @
- }, 1000);
* g" O$ C# v, f6 x. H& E9 W - }
. X5 M: M( d$ f5 T( y - </script>
复制代码 8 ~7 n8 _" d! o- t% q9 Q
6 U( _" w0 a5 M; q$ }% b- g1 p1 _/ S3 U
|