cncml手绘网
标题: js定时器(执行一次、重复执行) [打印本页]
作者: admin 时间: 2018-7-31 10:57
标题: js定时器(执行一次、重复执行)
1,只执行一次的定时器 . C( q1 ]" i: ]; N
- <script> / T- P& P. e- ~9 o& Q ~
- //定时器 异步运行
* Y) b# B$ v; `# C m& i! C3 n7 B - function hello(){ G0 n5 o- ]) c2 Q& z8 R3 z7 ]$ d
- alert("hello"); $ P6 n5 j3 a- G5 u' d5 d9 w* _. I6 F4 e
- } ) Y- ` D( s0 C8 }- n
- //使用方法名字执行方法 3 h0 F" ?! g% {3 P; b
- var t1 = window.setTimeout(hello,1000);
. }! S a2 ~) W, @5 n - var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法
3 \0 c4 f9 l' K$ z9 r1 J4 ^' `" A - window.clearTimeout(t1);//去掉定时器 _* w/ @* w9 A3 f6 n! A6 M; ^$ R
- </script>
复制代码 2,重复执行的定时器
- L& P% ]: p4 ^ r% c9 L; y- <script> 9 x) U4 N1 O [
- function hello(){ " y, H3 |: g4 ]. i
- alert("hello");
# H9 J5 {1 N* u; Q" e# V5 N - }
; m) N( J1 ]! Q; y+ `+ C - //重复执行某个方法 , |: @" |" }. m$ ?7 U% v3 x& m
- var t1 = window.setInterval(hello,1000);
& _( z* w, P# w - var t2 = window.setInterval("hello()",3000);
, }9 K7 f$ _7 i( l+ w$ T$ j - //去掉定时器的方法 r2 x9 X4 p: r6 b4 `7 A
- window.clearInterval(t1); $ p( r u+ k: ~) M; d2 C
- </script>
复制代码 备注:
5 V( g# F/ y6 N% ^2 l% J0 |3 r
# A5 @- u- X- [$ V如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决: 6 V+ ^. a5 W. r8 D4 h0 n
可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。
' M( U& L/ Q# F( O* O7 p6 M& S
8 S) l9 l$ }7 f0 N0 Z* B3 T在javascritp中,有两个关于定时器的专用函数,分别为:
1.倒计定时器:timename=setTimeout("function();",delaytime);5 p' m7 f0 p" H1 Q# q
2.循环定时器:timename=setInterval("function();",delaytime);
第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成
7 k0 j/ n Y/ `$ h& N/ j“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。, x# r9 {( H; z6 O* g
倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。
' l+ d4 }- x0 {: o+ q& }比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,5 V0 D) r( D+ F/ i9 O: Z1 b
则需要用到循环定时器“setInterval("function();",delaytime)” 。
获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。* a' M( f2 y4 _+ `( j. d$ G
比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。
定时器:
用以指定在一段特定的时间后执行某段程序。
JS中定时执行,setTimeout和setInterval的区别,以及l解除方法
setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。
+ X* ^# }) `2 O( R6 ]; i8 k" usetTimeout("function",time) 设置一个超时对象
setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.
- {3 t: W N4 c" E# V. R: L# I- \setInterval("function",time) 设置一个超时对象
SetInterval为自动重复,setTimeout不会重复。
clearTimeout(对象) 清除已设置的setTimeout对象) y. ~" i* E7 s) p# [- m
clearInterval(对象) 清除已设置的setInterval对象
略举两例。- K6 o6 O8 w, Q
例1.表单触发或加载时,逐字输出字符串
. I7 i* ~* n& T+ C. j- <html>' t- Y1 o2 T& R2 x
- <head>1 I/ b8 q; Y5 n( S# \
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
2 U }5 {5 n* Q) j - <title>无标题文档</title>
4 P! p6 E8 g2 u - <script language="JavaScript" type="text/javascript">- {6 u& \1 g# U, _8 \2 x. f6 h
- var str = "这个是测试用的范例文字";
' m, g4 G; h* ~9 @( e - var seq = 0;
: L& v, m; C) m: H - var second=1000; //间隔时间1秒钟+ m% e5 ~6 b* Y1 d2 H
- function scroll() {
' ]$ W! g/ \, U* U - msg = str.substring(0, seq+1);
# v' r0 c/ @0 ?# x* ? - document.getElementByIdx_x_x('word').innerHTML = msg;! d# i7 y$ ^6 T. q$ f
- seq++;
. r9 m7 W( s# ~" T. g9 M5 ]! s% d - if (seq >= str.length) seq = 0;
/ V9 H( i! q2 h - }3 d% W3 I4 [: ~7 N+ u7 T9 S
- </script># F+ `0 F% t$ n& \& E/ r. u* d
- </head>! M, Z. X4 E: z1 c5 R8 _' P
- <body onload="setInterval('scroll()',second)">
# f3 C* K, {6 x5 H - <div id="word"></div><br/><br/>9 F1 ?; z8 K4 h) a6 G
- </body>5 c# j& m Y! b; D4 Q! D7 G
- </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。3 X9 H( r: `1 p
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5 s8 _" |: {# i1 q6 t - <html xmlns="http://www.w3.org/1999/xhtml">( P& n# q4 y/ g \% o+ h% q9 a8 A. J
- <head>' p& F/ n( q/ o& u d3 C
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />7 _6 n+ J/ _+ O* N# A, }, K. X
- <title>无标题文档</title>* G' w; M1 `" C# K1 B5 o) t k
- <script language="JavaScript" type="text/javascript">
& B0 R( [( }" e9 D* C - var second=5000; //间隔时间5秒钟 ^/ p' {0 ~8 ~ r( ^! w& n
- var c=0;
. `3 Q+ n: z, _1 c% O - function scroll() {. |/ {" M( S% R4 l( {- s: @. f
- c++;" P, \3 }' H; b( t( A7 l" d. o
- if ("b" == document.activeElement.id) {
. Q t% U3 f) ]( K1 \ - var str="定时检查第<b> "+c+" </b>次<br/>";
9 h# t. L9 z9 u5 ?9 V* g' }. ^4 U - if(document.getElementByIdx_x_x('b').value!=""){
0 L0 ~& {* \2 h5 r - str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";7 A0 R5 Y" R+ ~ D
- }+ c" @5 M9 ^+ D" j# o7 A; ]
- document.getElementByIdx_x_x('word').innerHTML = str;' L% K4 R0 q* X( J; f1 r$ n s
- }
5 Q6 F4 w/ x; x% r5 s R - }
! |% W+ B' ?' e& p0 o) W0 k. p - </script>
- e- Z9 d) J; O/ S, h8 C6 d2 f( M - </head>% z6 `( _$ w0 u% y/ E( U) q
- <body>
) Z r9 W, U& v' U& m - <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>
! z% Y3 F# f- n2 S. ~9 b - <div id="word"></div><br/><br/>
! {. X3 p# I/ N7 a% o) A7 j - </body> h2 l$ G) R4 R
- </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。; f9 J, h( _. p6 U% B2 W; Y
- <html xmlns="http://www.w3.org/1999/xhtml">
7 ^" O3 d( |- B8 e4 h - <head> F- ~) d5 \, H" K. p# d
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
. a3 s$ N0 |7 G5 p& ?! H, a, W$ h; g - <script language="javascript">
9 T. _$ Z6 ^. @* @+ f: _ - function count() {
5 V9 M: e- u5 h0 J" ^ - document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";
T; ]" w& }% |+ H* B - setTimeout("alert('十秒钟到!')",10000) m0 |1 q5 K3 w
- }8 q7 o7 t% }8 x+ s5 u3 S' W( U
- </script>
+ U5 w; Y1 w) z: q9 ^; J3 S - <body>
( [* j1 D& R: Y - <div id="m"></div>
) y* @8 _7 z3 `, C" X+ t - <input TYPE="button" value=" 计时开始" onclick="count()">3 M4 H) |5 T! T' V F; C) I- e
- </body>$ Z( l$ J: f, q/ {& _
- </html>
复制代码 例4:倒计时定时跳转
" [7 U1 K- k& p0 \4 B- <html>; b. I0 X! \9 ^ L* F8 s+ I% T
- <head>1 R5 F9 T! C' {; F5 x" ~6 e$ {$ z
- <base href="<%=basePath%>">
" o. N7 s' z1 {9 I0 k& A2 |: y4 W - <title>My JSP 'ds04.jsp' starting page</title>
5 O7 R/ R$ _; f% N7 S) v - <span id="tiao">3</span>
3 g8 }8 t# d+ D3 p9 Y; U3 | - <a href="javascript:countDown"> </a>秒后自动跳转……% @' b4 g/ ]9 P* N- Q
- <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>
7 w6 ~# U2 ]1 ~1 r* N7 ~1 R - <!--脚本开始-->* k7 P. y+ j; c3 F5 N
- <script language="javascript" type="">; g) d" _% I% |* K0 g
- function countDown(secs){
, d* O2 R [/ Z1 r2 s - tiao.innerText=secs;4 G! ^! ~0 j( D
- if(--secs>0)! L5 z. W4 ?7 j* K# o I2 a
- setTimeout("countDown("+secs+")",1000);
: h; I- v" Z4 o - }
* r4 C Y+ _+ Z' Q1 y6 U - countDown(3);
; a# V( V7 O3 G2 j+ \ - </script>
+ x1 r/ c* x- | - <!--脚本结束-->: P. H1 P+ E- i2 u
- </head>
复制代码 例6:. J" ^7 ?. q1 L* A2 Z( K- T5 c# a' q
- <head> 9 E7 G# C' Y* L V# A
- <meta http-equiv="refresh" content="2;url='b.html'">
x. E4 [; M: q - </head>
复制代码 例7:5 K( W" k+ b! m5 T
- <script language="javascript" type="text/javascript">/ s& Q* T& H/ \
- setTimeout("window.location.href='b.html'", 2000);: |* t: m7 `& h9 f6 s7 q4 E
- //下面两个都可以用
6 N2 F! ~& t6 Z* } - //setTimeout("javascript:location.href='b.html'", 2000);# A4 }4 n4 Z; o
- //setTimeout("window.location='b.html'", 2000);
: Y+ D5 N9 J5 @# y& w% X$ { - </script>
复制代码 例8:( ?! Q7 S8 x1 O: D6 q% _% V& t
- <span id="totalSecond">2</span>0 p q, I4 @3 N4 i. j9 b' z3 K
- <script language="javascript" type="text/javascript">+ r1 } D3 m `( ?
- var second = document.getElementByIdx_x('totalSecond').innerHTML;2 P" g+ c: e: F, J* n; o! T
- if(isNaN(second)){
2 |" J! U( e ]! Y( y1 K - //……不是数字的处理方法
4 i9 T; k( ]8 ^8 l/ c - }else{
1 g M5 }( v( f; q! A - setInterval(function(){) U; a5 X0 u( H; n1 ]: Z, c4 J& b
- document.getElementByIdx_x('totalSecond').innerHTML = --second;
0 L; H( l4 G7 t0 B9 w - if (second <= 0) {, h6 z# z: M% n: {8 g# w0 M/ f
- window.location = 'b.html';9 s |* {& c6 N5 G4 T
- }
2 g8 k! H5 C, \! u6 Y - }, 1000);" k q8 k3 y! v5 \
- }
7 |! J+ y1 r) J# } - </script>
复制代码 ; L& m' s; b2 f( P8 D/ l4 b! O& q
, k4 V P+ A8 b2 [" w1 i
3 ~" c3 a W9 P/ t% Y5 J6 D
欢迎光临 cncml手绘网 (http://bbs.cncml.com/) |
Powered by Discuz! X3.2 |