您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13400|回复: 0
打印 上一主题 下一主题

[js学习资料] js定时器(执行一次、重复执行)

[复制链接]
跳转到指定楼层
楼主
发表于 2018-7-31 10:57:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1,只执行一次的定时器 ; W- w- X% H# t, G
  1. <script>
    5 j; N7 X) f8 [% B+ q) l/ p  R
  2. //定时器 异步运行
    1 b2 h9 p! }9 l9 \$ c+ B9 @
  3. function hello(){   `5 I, i% L  E+ R0 x7 U5 Y) U
  4. alert("hello"); , W  n2 o3 n: b6 ]* A; S  ]9 X) H
  5. } & c5 w/ f! |4 j- q- N
  6. //使用方法名字执行方法
    3 f1 Q+ ~- `) z* A! P0 m* O# J
  7. var t1 = window.setTimeout(hello,1000);
    / _$ u: D! z6 |0 ^8 W/ O5 v
  8. var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法 ( c7 P  p7 R. G+ n
  9. window.clearTimeout(t1);//去掉定时器
    0 p. z9 l2 j: S8 n' V$ k3 d. n
  10. </script>
复制代码
2,重复执行的定时器
6 Y4 h2 e4 G7 a( O% J, d2 A
  1. <script>
    . ^7 ~& h9 M; ?8 x: H& z! S9 m" }, e
  2. function hello(){ 4 D: z  z, C& O3 z2 e) ?
  3. alert("hello");
    6 y2 _7 P' [) L: F) x0 {/ x
  4. }
    6 ?: h9 A: B! J1 m3 x
  5. //重复执行某个方法
      J9 C% `1 B* i3 {4 O
  6. var t1 = window.setInterval(hello,1000);
    / e: C) Y0 g! Q6 I
  7. var t2 = window.setInterval("hello()",3000);
    - y+ J0 n, V  l. u7 T: P0 n) w
  8. //去掉定时器的方法 * x# |. ^; T/ \! j2 o. A
  9. window.clearInterval(t1);
    * m" D2 x+ ^  O$ i
  10. </script>
复制代码
备注:
2 S4 _5 E8 \9 N2 \3 P- w4 y
: d- Z3 A4 A" e$ }% m/ b+ F如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决:
4 N  u' b8 o/ n! B. `可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。1 a3 J. p0 j% k- j

4 h% J7 x1 S4 h+ p0 x

在javascritp中,有两个关于定时器的专用函数,分别为:

1.倒计定时器:timename=setTimeout("function();",delaytime);2 o; b& _) T% X4 d7 g
2.循环定时器:timename=setInterval("function();",delaytime);

第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成5 W4 v( v6 V8 j  l4 U) o
“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。
. k2 o) v* q2 M' |. Q  倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。/ |/ \2 p* Z4 c. `! h/ a
比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,
( @, c( Q; B' C0 G3 a则需要用到循环定时器“setInterval("function();",delaytime)” 。

获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。  R3 x/ O+ N% i, C  L* U7 _3 {  z
比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。

定时器:

用以指定在一段特定的时间后执行某段程序。

JS中定时执行,setTimeout和setInterval的区别,以及l解除方法

setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。- h8 }( w  h9 q5 h0 r+ l
setTimeout("function",time) 设置一个超时对象

setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.
) P' x+ ^- \" R% L% ~setInterval("function",time) 设置一个超时对象

SetInterval为自动重复,setTimeout不会重复。

clearTimeout(对象) 清除已设置的setTimeout对象8 |' P' _$ R( k7 k9 u( S- S
clearInterval(对象) 清除已设置的setInterval对象

略举两例。
. d# R6 f6 ~; d. S; C* {例1.表单触发或加载时,逐字输出字符串


1 L& C0 r7 _  m5 @0 q
  1. <html>! F! A+ C& q. B; @
  2. <head>
    % p% u/ e2 u& [/ x
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    # C4 v- U4 C4 B. U5 u, t
  4. <title>无标题文档</title>
      s( b$ C+ v  W& y8 @
  5. <script language="JavaScript" type="text/javascript">( q' I' B4 K0 T2 F; Y* v' \
  6. var str = "这个是测试用的范例文字";2 }, J. h# _2 f. m" V" ~5 d
  7. var seq = 0;! t: D4 S# a/ W  [' {, O) a
  8. var second=1000; //间隔时间1秒钟
    " G6 y  ]; z& c1 n1 J( ~6 a" p
  9. function scroll() {
    * _) T/ D% M% V* f: n+ L
  10. msg = str.substring(0, seq+1);
    7 O/ f5 ]! Q' I' c; d0 S
  11. document.getElementByIdx_x_x('word').innerHTML = msg;
    9 w! [0 E) ]* ?- R  z% U2 Y
  12. seq++;+ T. D( H; b1 m7 q: I1 W
  13. if (seq >= str.length) seq = 0;
    # S/ V- Z' M1 A) K5 Y
  14. }, Y/ X( A  [( L' [& O- d; [
  15. </script>
    * R$ r" n! x8 |1 L, `3 P
  16. </head>) V" F& s/ n& ~# D
  17. <body onload="setInterval('scroll()',second)">
    ' r( c4 O  m3 @* |+ h. f, C! V
  18. <div id="word"></div><br/><br/>7 a( d* n& O/ K; B
  19. </body>) m2 ?+ X( k- e# L. E9 r
  20. </html>
复制代码
例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。3 _! f( j1 J6 Q- T5 [
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    " i. [5 L( {! K1 ]; y( G4 j
  2. <html xmlns="http://www.w3.org/1999/xhtml">6 h" L& a" j  Z8 ]. p5 B/ Q) n! x
  3. <head>* E+ X$ m( c3 o1 K: \
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />& X9 r5 D" C+ F0 p: i
  5. <title>无标题文档</title>
    ! z) i4 K" a* v5 S
  6. <script language="JavaScript" type="text/javascript">
    4 B9 m8 U( S7 r2 f0 R
  7. var second=5000; //间隔时间5秒钟' U$ r, b$ w9 N" Y# ~' f
  8. var c=0;
    0 d- Z6 c; k( Y2 u- @" d: k8 s2 D
  9. function scroll() {
    5 Y9 k- [& Y9 P8 Z* m7 }
  10. c++;' K6 [! E6 \: ~* e4 `
  11. if ("b" == document.activeElement.id) {; v" s2 `: P/ ~$ r
  12. var str="定时检查第<b> "+c+" </b>次<br/>";+ H% f% u' j$ v4 j1 X7 g9 S/ Q
  13. if(document.getElementByIdx_x_x('b').value!=""){
    6 A. D/ t9 D! |0 q0 H; K1 m
  14. str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";
    0 s, A& Y  K2 C, C  {0 _# i8 ^  w& R
  15. }8 y% `  ^% O- M% y' K
  16. document.getElementByIdx_x_x('word').innerHTML = str;" s5 W9 L" ?: w! d2 Q
  17. }) A9 I7 s$ V9 m7 b3 l
  18. }
    5 v% H  S6 k' U8 H5 d! u* Q
  19. </script>, S, C- K: z+ q, K5 f
  20. </head>7 ?7 C! g5 \' y
  21. <body>
    $ m; D% S! @. e; C* f% U
  22. <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>
    + m0 ^2 n5 u1 h8 ~. D
  23. <div id="word"></div><br/><br/>
    - o% C$ @4 N  O# g  X5 u! O, ~
  24. </body>
    ; t. Q' {. c$ [1 {, O+ E
  25. </html>
复制代码
例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。
2 r# T& v4 w5 ]
  1. <html xmlns="http://www.w3.org/1999/xhtml">* @: s( r. j$ d$ h* @9 v
  2. <head>
    & ?. z; I4 T! f; o$ S  ], K" n
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    / d0 h- I& |4 C0 s9 d# ^( T
  4. <script language="javascript">
    3 D. H8 s# _5 c  O  v
  5. function count() {
    & R' W7 ~3 h  K* Z( W0 R
  6. document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";9 _! x, m% }$ {  }* d
  7. setTimeout("alert('十秒钟到!')",10000)
    ; F9 a& K: m1 s/ h/ i
  8. }
    / b1 ]+ S, A+ s8 d" ?
  9. </script>. T9 Q# T- f6 |* z
  10. <body>
    6 R2 b8 o& J9 s2 \# L6 W
  11. <div id="m"></div>3 T$ K1 o" d  L3 @' B6 A! U
  12. <input TYPE="button" value=" 计时开始" onclick="count()">' b* W  Y/ d/ C6 x; U
  13. </body>1 ?8 @! n( a" I: r
  14. </html>
复制代码
例4:倒计时定时跳转
$ x2 G8 g! h8 C$ l. H' M- d- Z
  1. <html>
    * f. V  O9 s/ b2 @2 O
  2. <head>' F5 U2 O, j5 U5 S, ~( Y
  3.   <base href="<%=basePath%>">, t1 N; D* {8 a# Z0 s( `& ~+ m, G
  4.   <title>My JSP 'ds04.jsp' starting page</title>4 D6 ~/ D$ C+ |- Q, V9 {# K
  5.   <span id="tiao">3</span>8 s& m" [* ], H1 u, [- F
  6.   <a href="javascript:countDown"> </a>秒后自动跳转……
    2 L  Z& l) Q3 }
  7.   <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>
    . i& n' @5 S" n, R' n" S: n* V
  8.   <!--脚本开始-->
    6 [+ e5 c0 U5 f4 ?
  9.   <script language="javascript" type="">
    8 q8 E. ]7 Y9 \) y
  10. function countDown(secs){3 S8 d, F# M6 l! `6 b2 h3 p
  11. tiao.innerText=secs;
    ) i, A; m- V  D$ [. N
  12. if(--secs>0)
    $ g; s1 a0 \: u8 j7 j' e4 x1 I0 d5 E
  13.   setTimeout("countDown("+secs+")",1000);: `$ c! ?0 M+ c+ L: D
  14. }
    ( ?& _% L; _6 \5 c, L
  15. countDown(3);' P5 B: O! K5 y1 O( }) Y
  16. </script>
    % @# X' Q, P% `3 ]! j- K. i
  17.   <!--脚本结束-->) w2 @; c8 P4 ~. I) O
  18. </head>
复制代码
例6:
+ e+ n. I8 y# Q9 d5 M$ p) j3 A
  1. <head>
    % ?. J5 c/ F1 D7 ~, ~4 C* H
  2.     <meta http-equiv="refresh" content="2;url='b.html'">
    - F: f) o7 T9 k* m3 f! F
  3. </head>
复制代码
例7:
/ r. l  h" a$ T2 c2 f
  1. <script language="javascript" type="text/javascript">! v& b* k% G8 f6 q* ^9 S
  2. setTimeout("window.location.href='b.html'", 2000);0 E% g. o" {! J8 ^4 Z% V, l" M
  3. //下面两个都可以用% p" S+ z- h6 m# X8 b3 Z
  4. //setTimeout("javascript:location.href='b.html'", 2000);
    : E6 K: K2 d. |# |
  5. //setTimeout("window.location='b.html'", 2000);
    / ~: z, x# x+ d" |6 I- D$ W
  6. </script>
复制代码
例8:3 K3 F& |# w/ h6 y& v
  1. <span id="totalSecond">2</span>
    " k7 q; v/ Z1 P9 }: D5 U4 l5 L7 s, g
  2. <script language="javascript" type="text/javascript"># x# Q+ R" \2 M. l: k7 C" ?( X
  3. var second = document.getElementByIdx_x('totalSecond').innerHTML;0 s- N2 n9 W3 g0 u; _+ f" Q6 z
  4. if(isNaN(second)){
    # Z+ M1 m9 W) s, }
  5.   //……不是数字的处理方法
    8 I1 n* N( s! I) X% B6 e
  6. }else{* i+ {. b  `6 I3 w
  7.   setInterval(function(){
    ( Y3 u2 C1 U  D- g. O- A) a! S& g
  8.    document.getElementByIdx_x('totalSecond').innerHTML = --second;
    & \+ l! T$ q) a4 d! x
  9.    if (second <= 0) {& y" U/ d" x( \1 I
  10.     window.location = 'b.html';
    % r* R& q2 E' ?: }1 s/ r
  11.    }
    / f- F, T( F( T" K/ V
  12.   }, 1000);4 g$ v5 U% _* O6 p5 L/ m9 g
  13. } 3 P; ~8 }: O5 m1 w0 i; M
  14. </script>
复制代码
; d7 B0 w# N8 [5 a

# @' h! d8 X; X/ n# q( c! n6 Q7 v# h7 `6 Z$ S
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 21:05 , Processed in 0.058352 second(s), 22 queries .

Copyright © 2001-2026 Powered by cncml! X3.2. Theme By cncml!