1,只执行一次的定时器
6 j& p" M. A8 |6 I- <script>
, @- T# D2 e2 [/ [7 Y - //定时器 异步运行 9 ]2 v! u0 {7 V& {( ?
- function hello(){ 4 d( }# c' B2 c
- alert("hello"); $ S# |# |0 i$ v& j" W- l
- }
) [: _7 A( y3 s! p. `$ G - //使用方法名字执行方法
3 b4 V, i1 n/ T+ F, C0 ] - var t1 = window.setTimeout(hello,1000);
+ q( b) W; O; }: `4 | - var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法
' `' n# e" N' P# U: I, W- u - window.clearTimeout(t1);//去掉定时器 ) Z, x. M- R) E7 B& }
- </script>
复制代码 2,重复执行的定时器
6 l% g% c, y% ~0 x$ K4 D! j, t) d- <script>
" h: P* E% z! P- @2 ]0 [ - function hello(){ : R/ U, @& ^& ?
- alert("hello");
- L$ w, f, [5 [! m8 o4 u - } 4 |9 a, j4 {/ I0 m% T: }" F5 |
- //重复执行某个方法 % s7 s& m5 W1 z$ _$ W
- var t1 = window.setInterval(hello,1000);
( D- H1 w/ i9 M9 x0 P - var t2 = window.setInterval("hello()",3000); ) b* [7 G, }6 `
- //去掉定时器的方法
( V! i+ u( y: j - window.clearInterval(t1);
' t4 |) ~& p; q) |; D6 q# A7 F - </script>
复制代码 备注: 1 t8 I% g& F# e. x s: T
9 j6 ^; c2 R5 b如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决:
* h% G% F- ]" G. G. ]6 K/ u可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。/ W5 h& i `* s6 P, j5 U+ I8 K# M
- F6 D7 A0 {0 U0 B- g
在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);
1 b. }1 J% w" k, k4 w9 P2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成/ H( f# Y7 o& v7 J8 j9 D
“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。& Z, g+ `, X8 u+ U0 V
倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。# H; h3 ~, T) e6 m- E
比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,
0 Z b) \! I( _9 t0 h$ t& K: I则需要用到循环定时器“setInterval("function();",delaytime)” 。 获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。
+ M* j. O9 ]6 Y) ~7 L6 a% N! _' A比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。 定时器: 用以指定在一段特定的时间后执行某段程序。 JS中定时执行,setTimeout和setInterval的区别,以及l解除方法 setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。, g* f3 C! w' A2 t, {; M6 @
setTimeout("function",time) 设置一个超时对象 setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.# q+ w' h/ a( H& A2 T8 x* d
setInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复。 clearTimeout(对象) 清除已设置的setTimeout对象7 X3 ~2 s. w. t3 a# W; V) L
clearInterval(对象) 清除已设置的setInterval对象 略举两例。
3 W, y1 S$ b) o例1.表单触发或加载时,逐字输出字符串
; `. F Z K( T3 C( c1 P$ E- <html>
% D4 D; x# Z! L - <head>
5 J8 \, w; q8 S" u0 E - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
+ I, z y* p6 v+ n7 @ - <title>无标题文档</title>
: e# r# \* y4 u$ W; O - <script language="JavaScript" type="text/javascript">+ d4 z" @8 |0 {) p: U4 Q% ?, _2 k
- var str = "这个是测试用的范例文字";
1 I- _2 \/ w7 A6 ~ - var seq = 0;# q$ ?$ z' X% X. V2 O/ e
- var second=1000; //间隔时间1秒钟6 d) D6 D0 J. ]3 e; ^3 L2 }
- function scroll() {/ }. U' {4 M9 h1 ^' T
- msg = str.substring(0, seq+1);2 r( z8 ]+ E. R6 L; A6 T
- document.getElementByIdx_x_x('word').innerHTML = msg;5 _$ Z- D( P" ?) X
- seq++;
+ [3 g& R# b% s2 }) t, a( K - if (seq >= str.length) seq = 0;* I/ l6 k2 M+ g. ], [6 s0 T4 M
- }+ @' {: M4 _3 d+ ^- r
- </script>0 L, {! ~, V2 D6 \
- </head>
; _) E+ {" m: I- i$ f - <body onload="setInterval('scroll()',second)">" c3 _6 P8 Y" [
- <div id="word"></div><br/><br/>
- A X* H. s2 J0 { y! c - </body>4 p6 S; {& L+ T2 V
- </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。, V- n6 {9 G( l! z8 S6 h/ Z5 K
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">; n5 v4 l2 P# w" O$ h
- <html xmlns="http://www.w3.org/1999/xhtml">0 _5 P5 t U t* ]# C) F& \7 a
- <head>9 ^! ]9 D+ i8 l
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />8 w( t& d. c" I0 @/ `/ x( z+ B
- <title>无标题文档</title>7 F0 \/ M. E) A/ O6 @* I5 p
- <script language="JavaScript" type="text/javascript">
; S n U, {; r- a* { - var second=5000; //间隔时间5秒钟7 o8 t- ?- F- M, K+ a
- var c=0;
3 g5 [ s6 B- T9 a2 S, t - function scroll() {
1 m& c1 l3 B8 ~9 {! H - c++;
' P1 ]' j# \1 s) M5 @' v" H - if ("b" == document.activeElement.id) {
2 _: o$ e8 m# W( U - var str="定时检查第<b> "+c+" </b>次<br/>";, s; A& Y8 T, T5 j$ j2 ]. s
- if(document.getElementByIdx_x_x('b').value!=""){
' o3 d& P( i3 c$ K- D - str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";& r2 K$ c$ l1 u$ E2 v7 v
- }7 F. p8 G! [ Y
- document.getElementByIdx_x_x('word').innerHTML = str;
. G) }& f8 Y' A0 R( I$ Y - }+ `; y! U$ Q. Q- L; r& B! a
- }. F5 \/ |. F0 f2 R S* A* v
- </script>* G! ] V9 T- p
- </head>- p1 f$ p+ K9 c3 }( ]# ^8 _
- <body>
- d* ?, [$ }/ p* N7 h) c. J - <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>( N4 X) `# p% [, q! j
- <div id="word"></div><br/><br/>( f, ~% Q0 Y% d9 f% k! a: B
- </body>, h4 N% s5 {" \" i- ?
- </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。: H7 Z) s, K+ ?. U4 p
- <html xmlns="http://www.w3.org/1999/xhtml">2 ^# z6 U1 ?# o2 R
- <head>5 z" g$ w" O/ E0 E/ }, F- Z- f/ J* r
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />( j% O5 q N; B5 t
- <script language="javascript">8 Z2 }$ N1 V& x* X9 z
- function count() {4 o6 j2 ^0 h5 v: S
- document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";
$ }& i. ?7 h) o9 r# S2 R0 P3 A) R - setTimeout("alert('十秒钟到!')",10000)
& ?! d5 C+ Z1 ] - }0 Z. x! \$ o0 W* m
- </script>
' T1 ?' F" i2 Q& b8 F/ y - <body>
( [( D! ]$ j, \# r6 ^: t( B - <div id="m"></div>
5 C2 \7 K' W4 _; E( _% l - <input TYPE="button" value=" 计时开始" onclick="count()">8 Z6 P; l7 s+ T) I! B+ b$ s% I
- </body>4 k8 G k: x) M( f
- </html>
复制代码 例4:倒计时定时跳转8 k" \- Q, U& O: M, N" i1 B5 C+ R
- <html>+ H5 x* u8 G+ ^5 {) W
- <head>- A0 s3 P; d* y# `3 a; j( }
- <base href="<%=basePath%>">/ ]- s9 m+ ^: J8 ]& {
- <title>My JSP 'ds04.jsp' starting page</title>6 k. s3 ~# P0 c8 E' H; _
- <span id="tiao">3</span>
9 |- T p6 `) v/ e D - <a href="javascript:countDown"> </a>秒后自动跳转……6 ^/ V) r, O1 ]; u
- <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>! ~1 f) g! I' [: P" s
- <!--脚本开始-->6 ]1 a! y" d; P/ [5 B4 j3 v
- <script language="javascript" type=""># K/ Q) F+ u9 k2 c- ~3 E
- function countDown(secs){
8 a& q9 K7 G9 O - tiao.innerText=secs; I; l; [3 D( O, d
- if(--secs>0)
# }9 H( X; h1 n! Q: |' c7 Y5 { - setTimeout("countDown("+secs+")",1000);
/ i% |, h6 { ]' ^' b7 n0 N- r) h - }' z4 R0 R7 Q/ w$ G; q! [1 K, b
- countDown(3);
2 _. f) v1 w4 x% p - </script>
D- w$ p0 c% S7 e8 M - <!--脚本结束-->
7 R. q9 {( \. n0 h9 i6 G - </head>
复制代码 例6:0 Z* M- f" A! k: d* s
- <head> 2 {/ P* T- b4 R* P0 t
- <meta http-equiv="refresh" content="2;url='b.html'">
" ~& G. o- V8 g - </head>
复制代码 例7:
r# M: d R" z& b3 R( l& A0 Q0 B- <script language="javascript" type="text/javascript">
9 m4 T3 U% }& c* y0 r - setTimeout("window.location.href='b.html'", 2000);
% a8 A5 S& X3 K* l8 f' V8 k) B - //下面两个都可以用# N" i+ Q+ t) `& x. I+ }
- //setTimeout("javascript:location.href='b.html'", 2000);# P8 ~" ]; Y& |! n5 w/ h1 e8 J! s
- //setTimeout("window.location='b.html'", 2000);
5 a$ \1 L+ q0 o. g" {! }) { - </script>
复制代码 例8:) F4 s/ y/ h7 N5 h; G& M1 f' C( e
- <span id="totalSecond">2</span>6 }5 ?5 D# R' h r. @
- <script language="javascript" type="text/javascript">
+ e B7 R4 Q. g3 C - var second = document.getElementByIdx_x('totalSecond').innerHTML;! G {( f- A0 F/ b; d8 w
- if(isNaN(second)){
2 K. I7 f* w! h7 b - //……不是数字的处理方法
/ D% A8 g* u$ m7 C. ?. F9 l: K; G- C - }else{
6 j2 F Y* s6 Z* [( U7 K0 K - setInterval(function(){
: m6 q9 e: C* d - document.getElementByIdx_x('totalSecond').innerHTML = --second;5 Y& i# D% {5 Z; z
- if (second <= 0) {: v d2 T7 `$ _ ~+ h
- window.location = 'b.html';. ?9 T7 q3 @" _; W3 d8 A$ Q
- }
3 s; D* W$ \+ F; n - }, 1000);
( ]7 N" N U0 L - } * w* S9 S/ v1 w
- </script>
复制代码 0 P7 a% {' ^( s
: [5 M( z# A' L! H
2 c, I, p; [$ L0 y" l |