1,只执行一次的定时器
6 q U( X! w9 F7 o8 X. F/ l t- S' ~- <script>
/ Y+ l' U- t2 J+ n# z% v - //定时器 异步运行
2 F& l- |$ e# N' f" k: @8 u2 ~ - function hello(){
$ n* ?9 i2 C: F- a - alert("hello"); ! f* I; e5 t& u* |
- } * E: D" H9 v* ]8 L1 k
- //使用方法名字执行方法
# @- O! d; w ]* G/ ^* Q - var t1 = window.setTimeout(hello,1000); 2 w" s5 V; H# A1 _' c
- var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法 + {" @0 J. O i/ y1 [% z
- window.clearTimeout(t1);//去掉定时器
! q* }4 v" J3 w; y - </script>
复制代码 2,重复执行的定时器 ' Q9 c+ ]0 Z$ h( A
- <script> s8 G5 [6 z. o7 e# X
- function hello(){
8 F: C% Q# u( L& j! ~! w* M - alert("hello");
0 B4 f. X/ ?; J- r7 S1 p) n9 J" {) T - }
" q0 G/ p# a7 j( d- j- x - //重复执行某个方法 4 S3 j# K6 L7 V l M, e, {7 Z
- var t1 = window.setInterval(hello,1000); 4 |9 |0 M. {3 r% {
- var t2 = window.setInterval("hello()",3000); 1 E# l$ U5 t' Y$ k5 E/ Y
- //去掉定时器的方法
- J' P# @& z. X8 @# L - window.clearInterval(t1); 7 K+ A/ H; |6 ~7 O2 m' P% F9 c
- </script>
复制代码 备注:
4 b: \+ C$ z" H1 h( R. n9 {7 q+ d4 N, i
如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决: 1 o9 z7 G5 t9 C( ^
可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。& v. U/ k% Z$ v1 C |8 ]7 I
3 A: ~& {# O! {9 z在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);* k! a% \: D/ q" S: F
2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成
2 z( n6 I, _( `; y“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。
& U1 n. F1 ?5 R* V( `' M 倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。3 i4 A' X% @7 Z. o& \
比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,
, i% y5 K. E, N! n0 `$ z则需要用到循环定时器“setInterval("function();",delaytime)” 。 获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。# w {+ B9 u: q ?7 E: P3 k
比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。 定时器: 用以指定在一段特定的时间后执行某段程序。 JS中定时执行,setTimeout和setInterval的区别,以及l解除方法 setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。# m" k( X) U5 d" l' _: P
setTimeout("function",time) 设置一个超时对象 setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.
' }. C' f5 w# I$ K2 y' `3 X8 bsetInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复。 clearTimeout(对象) 清除已设置的setTimeout对象" X2 C2 Y+ F. i6 T
clearInterval(对象) 清除已设置的setInterval对象 略举两例。
/ _* ]( |7 B5 l8 X: V% W例1.表单触发或加载时,逐字输出字符串 : [( ]2 a' ^& n/ c( X% K( L% |
- <html>: |8 Q2 J( G6 o% L
- <head>3 g7 H r( ~! ~$ J+ b* p
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />$ n \4 {4 n7 z7 h- L9 J$ ~
- <title>无标题文档</title>3 Q* e$ q6 W5 a9 d1 N3 C, C
- <script language="JavaScript" type="text/javascript">3 s3 K$ X2 O! d8 t, s1 o
- var str = "这个是测试用的范例文字";- i, l2 g) w1 C+ e* E
- var seq = 0;0 b& b [/ g+ _% F7 D. l
- var second=1000; //间隔时间1秒钟
2 e4 Z2 y2 @! r$ D. i0 j - function scroll() {$ d5 E A4 h8 r
- msg = str.substring(0, seq+1);
6 n# p+ U6 ^9 {8 w, M - document.getElementByIdx_x_x('word').innerHTML = msg;: l' m' I* C" T0 h7 o
- seq++;& q0 E# T: D$ ] ]
- if (seq >= str.length) seq = 0;5 g# h& M' r$ g6 H M2 c
- }
9 m9 R" X, ?9 Q. F- p. m, E8 j - </script>/ p5 {. K, X7 G X$ V
- </head>! _- C, X' z Y, k/ W
- <body onload="setInterval('scroll()',second)">; M8 h* G# _! n1 h1 H
- <div id="word"></div><br/><br/>. ]$ X; \9 X( S0 T J& K$ ^; _
- </body>
' s+ X5 ~# j/ L! |+ j5 H+ ] - </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。
* U9 B# h" a9 n1 i; |. t- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2 D1 V# n( d0 ~% u( x9 e2 V - <html xmlns="http://www.w3.org/1999/xhtml">+ Q3 Q9 G* t3 A: D1 _7 d2 l# U7 r
- <head>1 y! y. N7 \+ m, j9 W
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />- Y8 x$ S! t/ T, I X6 N
- <title>无标题文档</title>
+ H% {3 R y& z! E( N - <script language="JavaScript" type="text/javascript">0 `8 V. P/ }' {. C; u" Z
- var second=5000; //间隔时间5秒钟 h1 A, V/ r# R; z( W& N% o; y
- var c=0;' \8 A) ~* w; e2 A) O# e7 x
- function scroll() {- W; n( \+ s* z0 }
- c++;
8 [! s' o x* ^6 @3 m - if ("b" == document.activeElement.id) {1 ^$ B# T9 }7 C+ e% R7 m. D, k
- var str="定时检查第<b> "+c+" </b>次<br/>";, t D2 |, _' X9 l& Q
- if(document.getElementByIdx_x_x('b').value!=""){8 O8 p+ D( b9 a; ~- _$ B. h
- str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";
3 l9 a2 |8 r+ t1 y - }" n' k9 o; W0 T
- document.getElementByIdx_x_x('word').innerHTML = str;
: L) b1 l) g# n5 H% u& } - }. J; r$ O& I3 ~+ N2 U7 v2 A
- }2 B- j% N, X5 i) q% B
- </script>+ [7 F. H5 d- ]; a3 C
- </head>2 s: e" X: B( t7 U) L
- <body>
6 g& j! T5 K2 B! W - <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>
) F7 x0 {! u2 x( [2 r/ R - <div id="word"></div><br/><br/>
& ^4 v8 m8 L1 b - </body>; t4 P& l0 E* R! c* i! Y j
- </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。
/ o7 q# v$ s( r7 C% W+ C- <html xmlns="http://www.w3.org/1999/xhtml">
) Z% r9 J2 w1 b o# m - <head>2 c1 D( J+ J1 Q2 B5 p8 V c; k
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
- X; _. F! {+ f6 F3 {& q; V - <script language="javascript">0 D- C- V/ f/ X' F5 S
- function count() {
, i) m+ |: b: N) v - document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";
' |0 D+ d' ~. f: p - setTimeout("alert('十秒钟到!')",10000)+ B* w! _8 q, }& e3 T& r
- }
8 z) E( T8 k! a* m# W - </script>% S8 |( E; r/ e$ l( {4 b
- <body>
; ^# O* v7 W0 ~& |0 B0 q% y - <div id="m"></div>
2 `: R+ g: O7 p# n6 } - <input TYPE="button" value=" 计时开始" onclick="count()">2 B6 q4 o( g% k* O$ y
- </body> s& r' m7 u5 }6 G8 P
- </html>
复制代码 例4:倒计时定时跳转
1 n( t' i' v1 ~* x5 }- <html>
( f" R! _ s4 [+ B- A, \1 G; I$ k - <head>% K2 \- f5 x& f1 o+ q
- <base href="<%=basePath%>">7 Y4 O+ P3 J$ d0 x1 s
- <title>My JSP 'ds04.jsp' starting page</title>+ Q9 s, Q$ l( T+ [
- <span id="tiao">3</span>+ j3 z5 Q" n9 T" e
- <a href="javascript:countDown"> </a>秒后自动跳转……
0 G: l0 l3 h# S8 ~. X - <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>
1 B' L5 A5 w. ?( z W - <!--脚本开始-->
- e H* ~1 k$ H8 ] u - <script language="javascript" type="">! |. D* T9 U1 @2 M. @4 H, Q
- function countDown(secs){% D# V1 N3 r8 h" h
- tiao.innerText=secs;
; o9 S! z' a; k/ K7 b7 y - if(--secs>0)* ~* [. k1 s$ S- @7 T& [
- setTimeout("countDown("+secs+")",1000);
* e/ J9 @. S) b7 _* ]' m# ` - }& w: _) k1 w: A- e# H9 [6 Z- R
- countDown(3);4 d- P% \; x4 v6 H2 f6 l! D
- </script>
. Y8 D2 \, R6 p, e9 A- Z- L - <!--脚本结束-->5 p: B. g( t1 U, S* m
- </head>
复制代码 例6:
0 T+ F, t7 W) h" \; R0 L+ V6 E3 v- <head> " R" J" A/ x9 R/ r0 }+ s
- <meta http-equiv="refresh" content="2;url='b.html'">
* c& n! |0 g$ h. K, r! v - </head>
复制代码 例7:
' R0 k" H+ F+ U& M- <script language="javascript" type="text/javascript">" y! I# Q; i6 a3 T- Z4 `
- setTimeout("window.location.href='b.html'", 2000);
4 d, D& ]6 {; X, e( g - //下面两个都可以用
1 I1 ] P2 {1 Q# @2 L4 C4 J - //setTimeout("javascript:location.href='b.html'", 2000);
6 D) a, G7 [$ X0 j6 S1 R - //setTimeout("window.location='b.html'", 2000);
7 i* t, y* x5 q4 v3 j' I - </script>
复制代码 例8:$ w+ j. L' k! A2 }* a* W
- <span id="totalSecond">2</span>
9 D9 _4 c4 l! T* g% O - <script language="javascript" type="text/javascript">
7 L0 K% C" S E: F* L ` - var second = document.getElementByIdx_x('totalSecond').innerHTML;0 F/ w- C! u# d
- if(isNaN(second)){
: s( G5 z3 H. @! x - //……不是数字的处理方法+ C* Q2 x& a0 z4 }
- }else{
( r2 d% R& v/ Y8 N" u - setInterval(function(){
7 x/ Z" W! n( Q/ }1 y - document.getElementByIdx_x('totalSecond').innerHTML = --second;
/ A- z/ F( y5 x0 t( x' y$ y% t - if (second <= 0) {
0 [; z, v9 A1 y8 E - window.location = 'b.html';. [0 G" \7 [) { y- i& Q: _( H( X
- }
( O- p. O, S$ y/ X+ G# _8 N; x - }, 1000);! D C* I) I' A" F( R% M5 ~+ {
- }
7 b& c; W1 i( D2 g7 J - </script>
复制代码 $ }1 \: v/ Z' p3 H
- P W) d& r% \4 ], ~+ o
! w: H6 f- |9 ~9 ?: u- l% A
|