1,只执行一次的定时器
% c- z% ]; t, M) U- A9 n8 U9 Z# S- x- <script> 9 Z! K! Q% w- u& u! U
- //定时器 异步运行
4 f+ x! g( |. v# P& \7 E5 [ - function hello(){ : l, Z, D9 B" } k, b6 b5 @" U
- alert("hello"); ; z/ ?, a4 L+ m* H m* f' M R, z
- }
, p6 S, _$ u( Y. ^9 | - //使用方法名字执行方法
5 q8 O9 n! D' R: @( Y - var t1 = window.setTimeout(hello,1000); * _* E/ \, S ]7 q, T
- var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法
/ k' H# T$ Y9 Y, _9 Q - window.clearTimeout(t1);//去掉定时器
9 X& I* o* x2 z) L& Z: X' a - </script>
复制代码 2,重复执行的定时器 . {* w+ Q# s$ [* |+ ]: M8 }7 \
- <script> % S1 ?/ k' ~. k9 {+ w) j
- function hello(){
" j$ J9 k$ _1 A$ M) O0 U' d - alert("hello"); / K* d- ~3 A5 l( p( J" B" U
- } 6 W2 s `- V' F/ B+ v) J* N* f
- //重复执行某个方法
. f0 x( h0 @& D" _: N& o8 `. t( q. K - var t1 = window.setInterval(hello,1000); . @" }$ Y3 ~" G, P: X- b6 O! I
- var t2 = window.setInterval("hello()",3000);
, K S+ J0 [( m1 E - //去掉定时器的方法 ( M: M9 B9 S4 j5 Z+ a$ Y
- window.clearInterval(t1); " M+ j1 J7 Q; ?& h1 S# C
- </script>
复制代码 备注: & K7 d/ n7 E: q7 v% O+ c* _9 A
" d' i7 h4 F" ~ j& P如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决:
. G" h8 A U: e- f可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。
( b; s# O6 L8 `: C; M* D& p) D" U0 J" x: V4 e* k, A! W1 M; w/ B$ z
在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);
; }+ d0 O; D0 z% U% h+ U# ~2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成
2 W1 B& \, h% M% i* X0 ^9 E; _7 J/ p“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。
- P$ g: ~6 R G/ W( {0 P 倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。( b3 ^) a3 m$ |; s; O0 T* A4 Z
比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,/ c9 L/ D3 d! z6 s2 G% a0 e' x
则需要用到循环定时器“setInterval("function();",delaytime)” 。 获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。
+ u, K7 ]8 H3 @' `% l比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。 定时器: 用以指定在一段特定的时间后执行某段程序。 JS中定时执行,setTimeout和setInterval的区别,以及l解除方法 setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。
' Z- D. ^6 P6 ~% I4 ysetTimeout("function",time) 设置一个超时对象 setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.5 z( N$ G! w9 T
setInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复。 clearTimeout(对象) 清除已设置的setTimeout对象! ?$ ]7 x& ?, C( V8 h# R7 H z
clearInterval(对象) 清除已设置的setInterval对象 略举两例。; m \% o- U p3 C6 Z
例1.表单触发或加载时,逐字输出字符串
) }! z( W# J/ M! J' [7 [7 ^" C/ p- <html>
# m! |& z9 v. D% N1 E1 J9 Y - <head>- N! a5 ?1 j, x! B p' y, W, G
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />7 \9 X2 v# W* N: V9 `4 ?
- <title>无标题文档</title>
) ?2 A$ }( V8 n, D4 ^ - <script language="JavaScript" type="text/javascript">8 Z9 K$ Q: F% w# B% a
- var str = "这个是测试用的范例文字";
1 t) F& l0 V" i - var seq = 0;; C# h& V2 q) ]+ Q/ b
- var second=1000; //间隔时间1秒钟' j5 G# L2 X0 d: [( ]3 I# @* [
- function scroll() {0 _1 @ e5 p# q% U9 k
- msg = str.substring(0, seq+1);
7 v: R" P2 E9 x4 m* e k% {5 b" Y - document.getElementByIdx_x_x('word').innerHTML = msg;7 D5 ^3 M* ~% ~4 ]8 b" H- @
- seq++;- A* s3 v/ ]% L2 w" [$ j
- if (seq >= str.length) seq = 0;
+ H2 u6 u! V) |; x6 t! B1 c - }4 Q: K9 K; j2 W, N8 n6 b
- </script>
$ r9 _ R9 x6 p) } - </head>
$ Z c! U" M* k* f$ o4 p - <body onload="setInterval('scroll()',second)">
: K0 O8 y' O% b. e* V& p - <div id="word"></div><br/><br/>: ]+ E7 w( V' \4 Q5 d7 ?9 k
- </body>
0 C! K. O, l. w3 g - </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。' \, @* _( t. V# y
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
# l6 T6 Q2 I: [ - <html xmlns="http://www.w3.org/1999/xhtml">
+ I5 Z5 G4 L3 l& R - <head>3 Q/ C) Z) z6 j! }
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />1 I3 _5 B, Y: \
- <title>无标题文档</title>+ G; Q- F" n. }1 [3 v" G
- <script language="JavaScript" type="text/javascript">; s1 u8 |. }' V7 O) [' }1 g
- var second=5000; //间隔时间5秒钟
, c% w, D6 H3 { - var c=0;7 @0 k" L+ @* y7 E
- function scroll() {3 ^. \( V, E* [
- c++;
( U9 `2 B- ^* v" l - if ("b" == document.activeElement.id) {
) [+ D+ D! i4 e0 c9 M: W3 F - var str="定时检查第<b> "+c+" </b>次<br/>";
' \% q/ D$ b: E; b5 m9 N - if(document.getElementByIdx_x_x('b').value!=""){; B( Q4 [+ `6 I B: W
- str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";' G& Q. E* N- ^ p+ D0 m6 @% q. ?
- }
5 ]( E3 D! b! h$ h& N; I - document.getElementByIdx_x_x('word').innerHTML = str;' N* Y8 x5 D& i0 @2 P- b# M8 q
- }6 T) E% Q* ~5 G# R
- }
! Q4 K6 X! H9 \' Q - </script>7 x% I, r: b9 r% C U. T& N# q
- </head>
2 Y8 |1 k& k- `4 l - <body>9 `- ~7 \* C4 i! T- ~
- <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>
1 {! ?( g ?6 i9 k: T+ k/ X - <div id="word"></div><br/><br/>$ t0 \0 V6 R) ^2 O2 m: C% ^; g& }
- </body>
9 a. b" k0 o3 H2 b) v! d0 L - </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。
6 U& G: k4 P" p5 m% z: D) n7 l- <html xmlns="http://www.w3.org/1999/xhtml">- Q5 e3 k4 j$ Y2 B7 I8 J: {4 l
- <head>; j3 y: N; I- c9 }* W4 D# Y" ]& M
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />: }' {6 t4 m9 @7 g
- <script language="javascript">/ Q: C( F7 U2 W( d0 G' q4 L( ?
- function count() {
4 r' l5 O. U3 j7 C2 \ - document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";! r' G+ p$ o4 E0 W' @: H% m
- setTimeout("alert('十秒钟到!')",10000)! T, J( ], h* y" } v
- }
4 u/ |- i0 U, Y; x. q$ i% K+ v - </script>
& q1 q) K* h; T8 I/ L7 O, R - <body>3 ^# w3 p$ w# t; Q/ g% h* Z
- <div id="m"></div>
5 ?) b0 ]( r/ I4 h k1 y - <input TYPE="button" value=" 计时开始" onclick="count()">
% Q8 e& k: v0 I% b - </body>
7 o7 [ {6 J5 a6 B& V8 h - </html>
复制代码 例4:倒计时定时跳转
6 T; _' ~) q. L7 b- <html>
4 {# I- V" z2 m' { - <head>
) k0 N: D$ ~$ v% P8 P& A5 w) S - <base href="<%=basePath%>">
$ E4 k- f# M4 }& l - <title>My JSP 'ds04.jsp' starting page</title>
" g+ v w, r E* j& i+ u - <span id="tiao">3</span>
0 V9 r2 E7 X* g0 Y, e - <a href="javascript:countDown"> </a>秒后自动跳转……0 F1 Y! k9 G: J/ ]# m& N% f
- <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>+ V. Y1 A- g- [# B8 a5 ]1 A5 [
- <!--脚本开始-->
" y" |9 @# a$ j8 U - <script language="javascript" type="">
' U, H8 m* b f. J, h - function countDown(secs){
, P& g% Y7 h% S+ q3 A6 U- U9 K$ `! r - tiao.innerText=secs;; e1 W) n0 c5 e# e- s8 F: A
- if(--secs>0)
2 w m7 ^0 O7 c6 a9 @ - setTimeout("countDown("+secs+")",1000);$ f3 j; b! K1 \( R5 T: V# d
- }$ I2 Y8 ^* ^4 k/ ~3 R- e: O3 D7 X
- countDown(3);4 D% X3 G C8 w2 c5 l2 h/ `
- </script>
/ Q. [" x) a9 F5 m1 A/ r. G - <!--脚本结束-->
7 Q0 F4 ]3 r2 r& c+ M - </head>
复制代码 例6:" L. S# m5 p- j+ i e: e! j
- <head> 0 B W% x* X2 r% L* M
- <meta http-equiv="refresh" content="2;url='b.html'"> # D/ V2 f4 m9 v; g
- </head>
复制代码 例7:
% k( a3 L; j( N* O0 `- <script language="javascript" type="text/javascript">
f% V" @- L: F9 S) C - setTimeout("window.location.href='b.html'", 2000);
( ]* e4 c: W3 G: q+ `& | - //下面两个都可以用; k A1 w& Y4 z: b& q: d
- //setTimeout("javascript:location.href='b.html'", 2000);/ G0 a4 y. s( s. J' X, P
- //setTimeout("window.location='b.html'", 2000);% h+ m9 T) P, T% J. g5 [& b
- </script>
复制代码 例8:$ R* X* o& L( W# g4 a
- <span id="totalSecond">2</span>
& G% E4 B7 [# C% d7 Z - <script language="javascript" type="text/javascript">
# Q0 e' L# T8 I8 w) Z. m" Z0 ^9 { - var second = document.getElementByIdx_x('totalSecond').innerHTML;
' ]( L5 x, |% |; I8 F' X - if(isNaN(second)){
/ X c2 I% e. P# R& b; T* R - //……不是数字的处理方法
* Q( {7 B4 m# I2 A$ ~3 | - }else{
% O# B3 O6 r% l, T: l* T) ? - setInterval(function(){$ v% c0 q9 E2 Z) d% U" I- j4 T" J
- document.getElementByIdx_x('totalSecond').innerHTML = --second;
) r s' m' {& m- H - if (second <= 0) {
, ]6 _/ Q1 a5 _, k - window.location = 'b.html';
, Q/ H. Q+ j: m - }
T9 Z, e6 f. I4 E$ v8 |3 u - }, 1000);- }+ j- X/ G% @5 Y: r
- } 4 j4 _$ x) M/ H1 O7 K, q
- </script>
复制代码 % K) b1 `4 q0 A9 R
5 |/ H2 I6 s1 }
/ C( I0 K$ c/ i |