1,只执行一次的定时器
9 s" i" _0 O" L; i6 r$ d3 \0 ^- <script>
0 w' u. l! y" K" l T2 l$ ] - //定时器 异步运行
, ]: _9 a; |3 w - function hello(){
; T. P$ P8 G! g- [( }7 T - alert("hello"); , k G4 d; Y& q. F6 k
- } 1 P6 D% u3 v: o, ]9 n- m
- //使用方法名字执行方法 3 c& F( _# q7 W3 T
- var t1 = window.setTimeout(hello,1000); , G% f/ Z g5 w3 Y% V: g$ T
- var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法
) M$ }4 b6 v, u; o - window.clearTimeout(t1);//去掉定时器
5 ~. ? U& e5 m+ g! x; ~, M) m - </script>
复制代码 2,重复执行的定时器 ! R; _2 h; {4 T m1 q
- <script>
1 G8 Y5 G6 C# A! R/ w - function hello(){ 8 v( T; o! |* d8 s9 j9 `0 w3 G
- alert("hello");
5 g1 B& c% ^# @3 f - }
1 y3 z& \$ f9 U - //重复执行某个方法 / ~) j4 d+ ?: {2 b8 K" q
- var t1 = window.setInterval(hello,1000);
% L |2 ^! o3 q2 e. B: H/ E - var t2 = window.setInterval("hello()",3000);
2 {0 ]2 {+ Y& E+ d. @& r9 t - //去掉定时器的方法
" w1 ~2 ^( j( e8 @9 U4 P# m" w - window.clearInterval(t1); ! l3 `3 j$ B! W5 x
- </script>
复制代码 备注: 4 R; J2 C7 S @# o7 v
+ K* @8 F8 R# Y7 }$ s7 B5 q- `1 j如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决: # x9 c: j' @. _* J
可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。& r0 ^" {3 |$ i. T
* H: U/ R7 r7 f1 k在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);
' f% Z% j) `- O3 L2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成! x {" k% h5 p3 z! W# ?9 T8 w. Q
“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。( u. i' w) V' F. B6 E
倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。
: s8 \9 `8 S5 N" }& W% H% h比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,5 t/ k9 ?3 C) |" m* Z' J4 W8 I
则需要用到循环定时器“setInterval("function();",delaytime)” 。 获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。 {: [6 H c6 ^5 \0 Y
比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。 定时器: 用以指定在一段特定的时间后执行某段程序。 JS中定时执行,setTimeout和setInterval的区别,以及l解除方法 setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。* a5 M; E+ H `6 G8 A& z
setTimeout("function",time) 设置一个超时对象 setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.
* t, }. N8 v) csetInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复。 clearTimeout(对象) 清除已设置的setTimeout对象0 N$ o9 H5 R1 w( Y* O
clearInterval(对象) 清除已设置的setInterval对象 略举两例。0 K6 W: G( \" B+ R; n
例1.表单触发或加载时,逐字输出字符串 % H2 H1 F, m( c: R/ M5 A
- <html>6 ^, j5 U# I2 o0 C* c- @( ^
- <head>- J W! d, W; t1 V
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
7 s9 |- f! r$ [. R7 \" q: v - <title>无标题文档</title>% u$ @* a5 q, p1 M: c; W
- <script language="JavaScript" type="text/javascript">
5 @" N |7 \$ E2 p - var str = "这个是测试用的范例文字";
! {2 j' i% q) w( Q/ t - var seq = 0;+ L7 l" P$ g, O8 S w
- var second=1000; //间隔时间1秒钟& l% p- y- K/ K6 N! e% [
- function scroll() {
- t2 @% k. {7 R6 J* T$ \ - msg = str.substring(0, seq+1);9 ?. T4 j9 [ V: B9 O
- document.getElementByIdx_x_x('word').innerHTML = msg;
0 h' G' E2 W( z5 }" U' {! U - seq++;
9 V" v9 Z# k# {9 ~3 r$ d - if (seq >= str.length) seq = 0;
9 F/ ?" _4 ?6 C* l2 b U, @9 \. o - }: t+ R7 N( @. V! y% j/ G2 ]( l6 P. V
- </script>0 s5 i5 l h z; E, a
- </head>
3 J: W1 I# z" D" A - <body onload="setInterval('scroll()',second)">$ ^8 z9 T- g+ ?# S }% F+ C' u( w
- <div id="word"></div><br/><br/>
* U1 }- D: Z6 r+ m( S" c - </body>
/ F6 }* V! O2 {. {3 [' H7 v - </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。* W" |* O1 u/ H5 n4 ]
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
! i, E, D: r+ Q3 Z - <html xmlns="http://www.w3.org/1999/xhtml">
3 |! h! \; `% W: i2 p - <head>' m r F1 r1 {5 l9 s
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />, [% Z, z% z/ S2 f
- <title>无标题文档</title>
! Z1 e. j ^2 Z: u - <script language="JavaScript" type="text/javascript">5 y" c5 s, R. R+ w
- var second=5000; //间隔时间5秒钟0 _% Z5 ^' h$ w9 C
- var c=0;( j- R, H; `5 F& x
- function scroll() {
$ ^( I P- F$ M - c++;
2 |% n4 y/ d! h8 b4 P& V - if ("b" == document.activeElement.id) {
. N" p# V/ S0 ~& \& l% W, i8 r9 _ - var str="定时检查第<b> "+c+" </b>次<br/>";# k5 t/ a1 z. i9 T) S% b9 g2 \+ ]4 ^0 r
- if(document.getElementByIdx_x_x('b').value!=""){
5 { H9 h/ ~5 F& T' K: m - str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";
- v& ]! y; y, O- W - }
* a( v) i8 a# q4 t2 r - document.getElementByIdx_x_x('word').innerHTML = str;
* l R& m' Z7 G - }$ o5 t8 U% f' ~" _, P1 @9 G
- }; C9 m9 r1 j4 C1 l" O2 Z2 q
- </script>8 [) A% a m9 X F; t1 i
- </head>
: E5 c6 j' |- c+ K3 a$ X - <body>+ ]/ f3 G. d7 \" n/ }
- <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>
, \) X1 O' |( y% p" ~+ l - <div id="word"></div><br/><br/>
( ]5 {. k; l$ ^ - </body>
2 F0 D7 U/ U6 u) Q6 z6 l - </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。
+ e3 `$ \- G9 O$ V% h$ b& B- <html xmlns="http://www.w3.org/1999/xhtml">/ j* n) P' a" [& S0 P
- <head>
5 I" ~4 l( |( n9 }* P2 z8 g - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
1 ?6 d7 S2 t1 \( l6 j& y - <script language="javascript">
" c/ N, h- z9 \" W0 u - function count() {
7 H' a2 c) {$ b, s; f6 a - document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";, }6 x# D( ~, K' j) Q6 V. A
- setTimeout("alert('十秒钟到!')",10000)
. o. F# q* p4 C& ~. M& n+ k/ z - }8 R, ~3 c/ e5 L- ?2 K: A Q
- </script>
5 O: v# X: X% J - <body>0 _4 c5 h: _* e# @
- <div id="m"></div>2 p: A! e: ?& Q7 { A$ a: H: m2 j! T
- <input TYPE="button" value=" 计时开始" onclick="count()">* T0 n5 ]) A# X, ]* i' T1 h! D) n
- </body>& J' d6 A* T6 H$ y
- </html>
复制代码 例4:倒计时定时跳转
9 [3 I) D8 V" `2 }5 U/ b- <html>: w0 M/ Y0 `5 \4 t6 ]+ S
- <head>0 i+ _ U' Z1 x7 D, A# ]
- <base href="<%=basePath%>">+ e u6 q; J2 X% E& r. J9 d
- <title>My JSP 'ds04.jsp' starting page</title>: Z9 ^7 E, O, y1 r; U0 l9 H' |
- <span id="tiao">3</span>
9 {. _, H% n, Y, b$ [0 b7 A - <a href="javascript:countDown"> </a>秒后自动跳转……9 i; E- \. |, V B/ Y3 U
- <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>' j' E) K- K. Q2 x u' d# d
- <!--脚本开始-->. g2 v# b" m: U5 u! Y
- <script language="javascript" type="">
9 p2 R. @8 Z% G: {; [ - function countDown(secs){9 W+ k' W1 h) o3 M5 ~9 M7 n. }
- tiao.innerText=secs;
* v' }+ p% _9 } - if(--secs>0)
, o- E' ?$ ? o q/ A - setTimeout("countDown("+secs+")",1000);
* D& [& L% [! ^% u- Y7 P0 @" q - }- W2 I) h! Z+ d6 G/ W/ `
- countDown(3);
' p' d, v8 t! E+ g6 j - </script>4 I/ L$ ?/ m1 X* X2 g
- <!--脚本结束-->* m) _1 p+ R. w9 N7 x; P4 q
- </head>
复制代码 例6:5 A4 M1 p0 ~: @; U% m
- <head>
" y/ j& W! `3 S; y M& v6 Y# U - <meta http-equiv="refresh" content="2;url='b.html'">
I! ?4 p& C( `) w! _+ ^# n - </head>
复制代码 例7:
; O- s1 r& Y1 ^/ r5 Y' k- <script language="javascript" type="text/javascript">
( I$ R6 N) b) T: X - setTimeout("window.location.href='b.html'", 2000);$ n b4 D5 ] [4 F# }% V
- //下面两个都可以用1 e* p- a2 m) x2 \- j& r8 r
- //setTimeout("javascript:location.href='b.html'", 2000);1 r6 l: {/ O# Z- {4 S. ^: V
- //setTimeout("window.location='b.html'", 2000);; u* B; u0 [8 r; y4 y0 `9 h2 S* u
- </script>
复制代码 例8:& T9 I9 U8 M, A/ G4 B% J
- <span id="totalSecond">2</span>, c' T& E3 g5 a4 T( {% e
- <script language="javascript" type="text/javascript">* I/ L5 C- Z( q* L
- var second = document.getElementByIdx_x('totalSecond').innerHTML;. z( Y/ f/ P: [! S9 f L/ i
- if(isNaN(second)){1 b n5 z$ }/ u9 f1 z2 J) f
- //……不是数字的处理方法# z- L6 l. s, v5 D9 N! F5 e' B
- }else{
3 L3 ]; [: o7 a# v2 p R - setInterval(function(){" ]) P* ?1 o' `, V' N |( P7 L! `4 f$ \
- document.getElementByIdx_x('totalSecond').innerHTML = --second;
( J( I, i6 N) j6 A* l& |% y - if (second <= 0) {: w6 o/ W: f; w) P
- window.location = 'b.html';
7 g# B; G& {, g# h3 j5 l( S+ I8 J - }
3 l/ y- Z( }0 j& @ - }, 1000); o, R/ c q( F. ^% t
- }
6 [2 z y5 D- D0 Y - </script>
复制代码 ( l4 k! L( q' T& r1 b5 G3 ]7 @8 L
9 m% g: r# R: n; I, o
9 l# E& z }" F0 F |