1,只执行一次的定时器 " ?0 }) o1 M5 [) c
- <script> 7 n6 ~' d6 H" S$ y; p
- //定时器 异步运行 9 ?; ]. H! i8 x8 L
- function hello(){ 2 f5 t# E O# }/ [
- alert("hello"); 6 l. Y" k6 q7 |: a' o1 _5 S
- } & n/ p- V. J1 A4 @: y8 A' T o
- //使用方法名字执行方法
g# e8 E' d* o0 |8 k/ F! Y5 u/ D - var t1 = window.setTimeout(hello,1000); ! M+ W8 p. E2 \; p
- var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法 % p: q! E" S0 P8 }/ }5 @9 w! }
- window.clearTimeout(t1);//去掉定时器 ( u; \8 r7 Y# ` a7 [7 S
- </script>
复制代码 2,重复执行的定时器 4 X7 [& e, T8 x" W, _
- <script>
) z: ]) j) d6 |2 N; h f - function hello(){
) }% z7 y4 o) ?2 s2 n& `" _2 m/ l - alert("hello");
5 o2 ^! r0 U! h6 Q7 q2 d - }
, Y8 P) L8 j7 \$ a, B - //重复执行某个方法 , Z& O. b' L+ i
- var t1 = window.setInterval(hello,1000); $ I; f4 X0 u3 }
- var t2 = window.setInterval("hello()",3000); ! D) y' F, e7 ^. U5 z
- //去掉定时器的方法
. T0 z8 [9 a" }, l+ d2 f0 t! ?: x9 T - window.clearInterval(t1); 1 R* `6 t5 ^: a9 F5 [
- </script>
复制代码 备注:
, [9 g9 ]5 t+ j* l: d+ W+ u$ d: z
" G0 e% f9 J% F' t如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决: * \, I7 } I( v. I
可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。
5 P+ |) u; s/ D( B* S! k; C4 B6 a6 J7 L. g% P! k$ h
在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);8 B) n3 @: E. T1 q- n: k7 {$ ^ R
2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成. u$ B: E9 c$ U
“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。
2 Z# p( S3 K6 o3 j0 V `- q8 F 倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。9 b$ _7 D5 }7 G" S) S
比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,
9 s+ W+ I- J8 ?4 y( F则需要用到循环定时器“setInterval("function();",delaytime)” 。 获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。
2 i5 W6 e9 }* T3 n) [6 f比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。 定时器: 用以指定在一段特定的时间后执行某段程序。 JS中定时执行,setTimeout和setInterval的区别,以及l解除方法 setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。0 @1 }' e* t' R" V* o$ v
setTimeout("function",time) 设置一个超时对象 setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.
1 K+ v! V. X0 F/ q$ }setInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复。 clearTimeout(对象) 清除已设置的setTimeout对象
( m9 o+ T$ C3 _, D5 }4 j( iclearInterval(对象) 清除已设置的setInterval对象 略举两例。" r9 @+ J* C2 }* V2 B/ z& w+ Q r
例1.表单触发或加载时,逐字输出字符串 " o2 ^- `' u1 b7 e# q" x# f- v4 _
- <html>$ ?1 N5 e! u2 d+ M! A
- <head>& ], I- R& R5 I) y) r$ Z4 C) L! u
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
/ M7 w" ]; h( e. i - <title>无标题文档</title>
' d( t4 k- G' _, i3 m+ V - <script language="JavaScript" type="text/javascript">
: ?5 z4 ^, T0 n# Y" R0 \2 m; U$ J, ? - var str = "这个是测试用的范例文字";
5 k$ Z1 l" _3 x7 e3 v - var seq = 0;
* l0 \4 z7 O! U. o2 ^9 I5 W - var second=1000; //间隔时间1秒钟
2 K0 c$ U ]2 m k - function scroll() {3 a1 f8 g1 ?- I k* c9 |
- msg = str.substring(0, seq+1);1 b1 _0 ~$ P5 ^+ K, {3 c
- document.getElementByIdx_x_x('word').innerHTML = msg;
* W1 i& D! |9 s7 ] - seq++;. _: z0 ~. |& f; b1 q
- if (seq >= str.length) seq = 0;
" N) W& ]0 v2 e9 C5 o$ c1 U - }
' L' g3 N) W) O - </script>* z$ p. Q' m Q: F; I
- </head>
% ?; @- c g: F1 \# H5 f4 ] - <body onload="setInterval('scroll()',second)">
4 z7 D) p1 |5 X9 ]% j. V - <div id="word"></div><br/><br/>
% P; C1 t8 e; }9 _8 Q - </body>3 ~$ p0 g1 T2 t% c# y
- </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。
: i3 b, z2 L0 n- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">* Q( ~& g. v% v
- <html xmlns="http://www.w3.org/1999/xhtml">
) G6 M. i3 t9 M# n- f - <head>% W% w9 x2 @# e# V
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />1 n2 J# u1 n/ I
- <title>无标题文档</title>
! l9 V J# t' d# g c# X - <script language="JavaScript" type="text/javascript">% Z& D4 i; ?( f) k+ h" f7 I2 i/ t! f
- var second=5000; //间隔时间5秒钟! m: s2 E: p& x& a1 m" u
- var c=0;$ ?$ j" ~0 m# s$ j3 W
- function scroll() {
. W7 o6 ?# r8 ? - c++;
' \- g0 ]% \1 j+ l* {* C - if ("b" == document.activeElement.id) {
/ T) o' q2 D2 X+ B$ R; ?; i - var str="定时检查第<b> "+c+" </b>次<br/>";; O+ J" ?" w1 R5 n: |* ^
- if(document.getElementByIdx_x_x('b').value!=""){
4 {# q3 `" }* i4 C3 @% o2 N - str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";! d$ b0 W* |5 |2 T+ O) T& ?
- }) D9 p- J) V* L3 I) O
- document.getElementByIdx_x_x('word').innerHTML = str;) e" A7 S6 b" k" k: A5 i$ w
- }
% X) ^4 t" ?1 e - }; {. e- d8 u9 z% o
- </script>6 q6 _- H8 Y! T; ^6 s _! H
- </head>
t( @6 I9 d. V - <body>
0 x u; o& A/ y1 x - <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>. `- Z5 M6 g6 D5 X/ c4 H" I6 u. e
- <div id="word"></div><br/><br/>+ s% |- j4 Z0 [( H6 R2 o8 B+ X6 E
- </body>8 @ B- R, i- ?8 U; U4 R6 {
- </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。4 m& b/ m: a. K0 S. M8 T
- <html xmlns="http://www.w3.org/1999/xhtml">
+ h7 W' w4 n% N1 t3 K - <head>- [/ ^- R6 R, m# j
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
7 i; g; K/ {: s6 I& ?2 s) \, A - <script language="javascript">
$ f; J9 p' ^9 S3 x, m6 i - function count() {
W" i: e5 f$ {4 b - document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";
! ^ G; }7 w0 W - setTimeout("alert('十秒钟到!')",10000)$ [. T1 J# m( l% D2 D8 E% [) Y
- }- w' F+ \" S& l& P A' K# P4 T6 O
- </script>3 m0 |% s' v$ \
- <body>/ p1 g$ J h) @5 u1 i# y M- B
- <div id="m"></div>( I0 w2 Q; f. b
- <input TYPE="button" value=" 计时开始" onclick="count()">
# c) A' C: a/ ^/ h6 a; y' c* _ - </body>
5 j* i+ {* _2 R; g - </html>
复制代码 例4:倒计时定时跳转
u( `7 P& x# r0 L- <html>
2 b! P- l9 k6 | - <head>" k- ~0 L! U" t4 ~; ]9 X
- <base href="<%=basePath%>">
/ k% i5 Q3 y7 W1 f/ D - <title>My JSP 'ds04.jsp' starting page</title>/ l7 m" I$ {3 Q& B
- <span id="tiao">3</span>
8 ]2 |( p4 u5 T: O - <a href="javascript:countDown"> </a>秒后自动跳转…… l. X7 {+ n. y; _
- <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>' B3 n* \6 j! v
- <!--脚本开始-->; f2 G# R {4 [& {: v% @2 E# C9 d
- <script language="javascript" type="">* A, v$ D9 f9 B% B
- function countDown(secs){/ ^+ |) l N+ g( Q+ Q
- tiao.innerText=secs;2 X1 | b' j4 S0 H- d
- if(--secs>0)
7 F0 `+ L- U% R3 k0 A8 M8 h - setTimeout("countDown("+secs+")",1000);. Q4 P2 ~ w/ h; t# A, ^/ N2 b" J
- }0 [' o3 V8 D3 z4 ^0 D
- countDown(3);
* g% H5 s! ?9 A( C" C& d - </script>
7 P+ X5 x k# ~" e - <!--脚本结束-->
1 ]% A( q* f U$ f! p# U" `& e - </head>
复制代码 例6:2 u5 k. g. q8 w. z0 V, b1 e
- <head>
# T: l$ S9 p- W' ] - <meta http-equiv="refresh" content="2;url='b.html'">
% d, |) G! q' ^" o' b! |$ u M' O - </head>
复制代码 例7:
# b6 V( J8 u: r) h& \) a/ J% Q- <script language="javascript" type="text/javascript">" _( B0 w' G1 Z% c
- setTimeout("window.location.href='b.html'", 2000);
9 |4 n1 C) ?! u7 s3 W - //下面两个都可以用" M/ k9 @- V, G+ M
- //setTimeout("javascript:location.href='b.html'", 2000);# q2 r9 k5 Z; {6 q7 Q+ S
- //setTimeout("window.location='b.html'", 2000);
- z! o* I+ R5 t6 R: C - </script>
复制代码 例8:
0 R9 a1 N& H, s" [2 K, m0 A- <span id="totalSecond">2</span>
. O* b% T. z( b2 g) N - <script language="javascript" type="text/javascript">
, s+ k# I$ F5 Q Y) M! T. \ - var second = document.getElementByIdx_x('totalSecond').innerHTML;
& G1 n6 ~$ I4 L4 o' e+ |4 D, x. B9 k# O - if(isNaN(second)){
9 ?* `" W4 f/ [$ c% V5 a* t - //……不是数字的处理方法2 [$ n! i2 W N( c! a
- }else{
+ E) Z: J2 X! m( p* T2 B2 B, @9 i# G - setInterval(function(){) j5 ]& X) j: H7 D. S4 }
- document.getElementByIdx_x('totalSecond').innerHTML = --second;
& W" f* s; B, K1 X" |# S' G - if (second <= 0) {, S0 @. _) z& m7 q7 I& i
- window.location = 'b.html';
& r' _ n3 C# F* ~# X, m; ] - }7 r. j. T& g( j, o, J/ f
- }, 1000);4 k0 m' Y' v; `4 t- Z
- }
: M* C% n% r, V/ b( Q - </script>
复制代码
! ~, x y! Y2 G+ M! u+ [0 j7 S6 E' a- u
0 ?7 p! k% {8 H: x! _ |