1,只执行一次的定时器
- x+ [, |' @" d$ q! M) |/ D2 w7 o- <script> 8 V' h3 ~1 D i% H* y. e8 J
- //定时器 异步运行 y. ~! R, i& m5 P5 J7 s
- function hello(){
& Q; O. n# p" f% ] - alert("hello"); ! ~: w4 @! B1 J' z1 ` Z9 w! ], _
- } / b. @% {. L, H/ k. [- g
- //使用方法名字执行方法
4 }: X' H" b( ~# \% f8 Y2 F1 w0 c7 @, \2 w - var t1 = window.setTimeout(hello,1000); * `5 Z! W$ c* o! g2 g: l5 ]
- var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法 " l- U5 ]) _/ ] V! G4 ?
- window.clearTimeout(t1);//去掉定时器 5 a/ _4 ^; i: T& g+ U
- </script>
复制代码 2,重复执行的定时器 6 }! K- f: }, \; t9 o% K$ }
- <script>
f4 S2 Z$ I: t* |* v" h2 [- ]$ { - function hello(){ 7 P' h8 E3 C; D/ P4 s
- alert("hello");
+ f+ z# E; J, k1 j; a& q - } 0 q7 H6 x# ?5 W" T
- //重复执行某个方法
% R; _7 {7 `6 K m - var t1 = window.setInterval(hello,1000);
2 Z3 \0 v9 S6 N* m6 m A |3 D - var t2 = window.setInterval("hello()",3000);
# W' d" T" [% w& Y+ t- H - //去掉定时器的方法
; M2 y- ~% D" R. R - window.clearInterval(t1); ! b- A9 U5 Z J N) j" q
- </script>
复制代码 备注: . b; E" T" M5 |/ [2 U- G
. X) m# Y6 s$ s/ ^1 q如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决:
, f! b; G* H3 V) n7 K( O5 k可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。+ J- d" n1 o1 _, T
. Q/ P: v7 }2 h t4 G$ l+ h
在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);; S/ f6 z% h/ f
2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成
- Z! P4 N% J! O6 [/ l“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。
5 j0 M3 b% h" N( B# Y5 l! b 倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。
. d1 ^' H+ s) J: _; l) N" t! Y比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,, u: C) I( `6 Y0 R
则需要用到循环定时器“setInterval("function();",delaytime)” 。 获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。
8 G0 w4 X# L$ d, w+ h5 l2 W: @比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。 定时器: 用以指定在一段特定的时间后执行某段程序。 JS中定时执行,setTimeout和setInterval的区别,以及l解除方法 setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。
! ?$ F" A5 ~+ d9 K: z6 UsetTimeout("function",time) 设置一个超时对象 setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.
# _# o: W: m, U6 T! r/ ^) esetInterval("function",time) 设置一个超时对象 SetInterval为自动重复,setTimeout不会重复。 clearTimeout(对象) 清除已设置的setTimeout对象
* h7 I3 d. P/ S( RclearInterval(对象) 清除已设置的setInterval对象 略举两例。$ l( r! Y5 d+ H3 F
例1.表单触发或加载时,逐字输出字符串
2 s, B8 W z) W- <html>9 j* t# ~1 [9 [# f$ s
- <head>
4 L! B$ q3 Z1 c2 c8 g1 F - <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />7 {2 f# s2 ?8 |9 |- s* _
- <title>无标题文档</title>$ K# ]2 e; g" }, K0 \
- <script language="JavaScript" type="text/javascript">; r0 I9 b: U2 p8 B3 G2 X
- var str = "这个是测试用的范例文字";
A; c( z" F$ \ - var seq = 0;
" Y0 x- l: A5 ]2 Z- ~6 S, y; N - var second=1000; //间隔时间1秒钟
! @# w2 u u+ S4 Z- v b - function scroll() {
3 c7 w+ }5 v* w5 ~ - msg = str.substring(0, seq+1);
+ Z" F5 _; Y2 u, j/ ]0 S - document.getElementByIdx_x_x('word').innerHTML = msg;
7 a* k5 L5 t* q) P5 C7 E - seq++;% |+ c2 y7 I P1 r, l
- if (seq >= str.length) seq = 0;, o. L9 M: U) T3 j9 R- {6 O0 a
- }
. @. x/ e* _ Y' J! H( Y; ^ - </script>
6 N; x# t) V& l. ^ - </head>* H3 V% K% ]. b, {
- <body onload="setInterval('scroll()',second)">
+ n& q5 i# N& W l) P - <div id="word"></div><br/><br/>
& s: `* T# w- x: g0 \3 {0 G A - </body>) W7 Q1 `8 e3 V: d
- </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。& O# \$ j9 v/ h% Q3 W: e
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">2 N) z4 u6 Y& U, J
- <html xmlns="http://www.w3.org/1999/xhtml">
8 e9 r. T5 T- i) R! N6 Z' a - <head># | {4 K( c, Y+ Q* m% Q
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />6 z( M' G' {* i4 n5 X/ s {$ \) ~
- <title>无标题文档</title>8 |9 E8 Q5 m' T
- <script language="JavaScript" type="text/javascript">3 Z* z) R9 V" [( a% U
- var second=5000; //间隔时间5秒钟* p4 ]' b. A1 ?- H7 a
- var c=0;
$ o+ }' q% V1 C6 V# T. p - function scroll() {: V* `: F/ u! }- T, E0 W
- c++;
1 B) M3 _7 @% d* P n4 S- w0 E9 s - if ("b" == document.activeElement.id) {
0 G0 w; O" _% t) w/ ~ - var str="定时检查第<b> "+c+" </b>次<br/>";) _4 s* J- E4 G% g/ J( L0 K
- if(document.getElementByIdx_x_x('b').value!=""){
4 T, _; `4 g$ ^: M& C- g0 N- U - str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";
. a. H( L1 M% d f - }
3 x- Y0 I0 X- H0 H5 q E1 a - document.getElementByIdx_x_x('word').innerHTML = str;9 ` l( f) }/ {% |6 U& E; Q
- }
9 M K2 t- h D! j5 E - }
; v3 K- U* Y( `; n$ p4 [0 ^& m - </script>
2 t7 y9 _1 D8 W* t3 R& u0 K - </head># p0 K0 ]( @- g* \" i/ U
- <body>' o! b9 ]/ a+ ^
- <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>
6 c* D, E' ]1 P' G" p* ? - <div id="word"></div><br/><br/>) J2 K' {# h8 T6 t& L; W
- </body>; f. }6 h; |+ H3 g' _
- </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。0 P2 o6 _2 C5 [
- <html xmlns="http://www.w3.org/1999/xhtml">
# y) u( o( H# ^/ i/ v- c - <head>5 N* A7 k8 c4 [/ {$ V
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />' ^8 N6 c' X0 f8 g- o" F5 D; n
- <script language="javascript">
! }1 W7 _" m' g7 m8 g! o - function count() {
$ X# n* C) |; q; [! F4 U - document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";
( e w! l& e& F# m6 Q - setTimeout("alert('十秒钟到!')",10000)4 s1 m$ N1 u/ u% B# \- \
- }
1 x% B I: Z, ^# P6 t - </script>8 B, J7 L# F3 j2 j/ ~
- <body>
$ G ?: P* T3 n1 I - <div id="m"></div>
2 M+ Z0 c2 `* [6 { Y' n# l - <input TYPE="button" value=" 计时开始" onclick="count()">2 r; v) y. U, w) \5 c& Z, F; {
- </body>8 u2 @3 j5 a/ y/ n7 L
- </html>
复制代码 例4:倒计时定时跳转& `4 d$ X% e' u1 f( l( }) ~0 @
- <html>
1 U* B# `+ F/ r5 M( y( c - <head>1 Y# Z% o6 x+ H% Q7 x0 K
- <base href="<%=basePath%>">2 s$ w0 I K" \& t# \3 U& d
- <title>My JSP 'ds04.jsp' starting page</title>2 X1 B' x' M4 Y
- <span id="tiao">3</span>& f5 t) j: R% w8 Q6 A6 j2 t
- <a href="javascript:countDown"> </a>秒后自动跳转……
$ ?' G7 E0 h0 k& I - <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>
* u+ Z G9 e3 ~! O - <!--脚本开始-->
) ?! X' R% W S; j - <script language="javascript" type="">5 J+ w- p8 D8 G2 y; T( s: g
- function countDown(secs){7 C" f0 E" z& J6 ^
- tiao.innerText=secs;
/ y+ t3 k) q5 I" u7 N% R - if(--secs>0)& h, h4 J Z$ X$ e
- setTimeout("countDown("+secs+")",1000);4 L- T5 |; `& f, g X
- }9 k, C# R; e2 d- i, L
- countDown(3);
- X' X. D; {9 t" k# d; Q6 h - </script>$ X% L# m! `& i& f) ~; E, q
- <!--脚本结束-->
. B K7 Q1 k# v! X - </head>
复制代码 例6: P% K/ j+ L9 Q) D
- <head> ! j, @3 T+ T7 G( j& F: i
- <meta http-equiv="refresh" content="2;url='b.html'"> ' ^3 l% ?) g9 d( Z7 r( @
- </head>
复制代码 例7:
8 q; q& k: J0 l0 I q- <script language="javascript" type="text/javascript">
5 t0 v9 h Z# u8 B% P6 ^" S - setTimeout("window.location.href='b.html'", 2000);% w, f4 u; U. W: H
- //下面两个都可以用
8 y* F# k X" v - //setTimeout("javascript:location.href='b.html'", 2000);
% t3 \3 [4 a+ e0 a& Z; A! N$ ^; C - //setTimeout("window.location='b.html'", 2000);" o/ u# C2 C- v/ U
- </script>
复制代码 例8:) P1 \$ K3 e$ V
- <span id="totalSecond">2</span>
, R8 l5 E. d- R1 f# I) A b - <script language="javascript" type="text/javascript">
$ m+ {5 ^$ H9 g- S - var second = document.getElementByIdx_x('totalSecond').innerHTML; l+ Z q$ z l4 @$ `
- if(isNaN(second)){( w; y, w# c$ _3 x
- //……不是数字的处理方法
/ A% Q, o) U$ C' n - }else{
* A/ _$ S2 M& B) f. E e/ X1 x - setInterval(function(){3 o$ Z3 w" a$ c3 y$ w1 Y. L
- document.getElementByIdx_x('totalSecond').innerHTML = --second;+ A' h0 {* g1 r1 e& Q
- if (second <= 0) {' H; D) o7 f. U- Q
- window.location = 'b.html';
# v: \: E4 o( p& U - }3 [/ X7 T- g( T% c5 e
- }, 1000);
3 U2 ]: Q, i9 x- a3 Y% a - }
, d3 v! x `" | - </script>
复制代码
: x! T& s. ~- Q5 G" @% C6 L
& M7 B( [& M0 Y' m2 G
$ L+ a4 V; z9 N0 v; ^ |