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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-7-31 10:57:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1,只执行一次的定时器
9 O9 y% i/ _3 \6 _+ P9 ~
  1. <script> 5 Q' K1 y- B/ v( |# o
  2. //定时器 异步运行 , {9 G3 v! q" c' @+ h5 a
  3. function hello(){ # V4 o: v) r% b( f! I$ P/ n7 p
  4. alert("hello"); % E- Z1 f& D0 ]6 u
  5. }
    : u" ~9 Y0 g2 `" T9 k4 C; Y2 b
  6. //使用方法名字执行方法
    / v2 T4 Z$ e" b8 B. f
  7. var t1 = window.setTimeout(hello,1000);
    1 O3 C- i# l$ a/ n7 p
  8. var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法 / ~9 I, E& q9 o7 R
  9. window.clearTimeout(t1);//去掉定时器 6 I3 I; e( C2 f$ G. ^7 l
  10. </script>
复制代码
2,重复执行的定时器
* t  j0 b: [& I$ O6 s
  1. <script> 6 J4 x1 ?. `* J0 j: c
  2. function hello(){
    6 A% i, G% y3 N& Y/ C
  3. alert("hello"); 6 e3 a1 c8 D$ D4 k+ W- t% l
  4. } % x5 l3 h) z* w, k' c
  5. //重复执行某个方法
    $ {/ P# B# n0 c# {8 ~) O
  6. var t1 = window.setInterval(hello,1000); 4 v) ~1 Y. c0 ^
  7. var t2 = window.setInterval("hello()",3000);
      ?3 t0 _  `  z- E& p5 s* R- z
  8. //去掉定时器的方法 1 ?# p, n, `$ K6 C: ^8 K
  9. window.clearInterval(t1); " ?+ T& w' l% @% `  w
  10. </script>
复制代码
备注: ) I" _" C) z, J4 s

6 J$ h, j( _* x1 F, H如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决:
9 o7 @$ K& d5 t$ F9 f可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。  T2 K& N- i% Q% J/ K
9 U! L4 x4 C& u: a6 ?, }9 `

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

1.倒计定时器:timename=setTimeout("function();",delaytime);5 R6 F0 y3 d) W; c7 ]& ?9 G/ b
2.循环定时器:timename=setInterval("function();",delaytime);

第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成
# `3 @& v, L. _# _“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。
4 v( j5 ]/ m% a! H% e* Y  倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。, L. I# H- G8 I- u' l: z4 ^" z# }) E* c
比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,
+ B6 O9 v7 f4 l, O, L4 @; O则需要用到循环定时器“setInterval("function();",delaytime)” 。

获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。9 ~! s, [% H) [
比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。

定时器:

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

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

setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。
9 o. i& u6 o5 {2 b: W2 WsetTimeout("function",time) 设置一个超时对象

setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.% G2 V, C- I4 o! @$ N$ y; k; `4 v  U
setInterval("function",time) 设置一个超时对象

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

clearTimeout(对象) 清除已设置的setTimeout对象
% q7 p* }5 h7 C  f+ yclearInterval(对象) 清除已设置的setInterval对象

略举两例。
+ U5 W7 k2 {! F例1.表单触发或加载时,逐字输出字符串

* F' D9 J1 t2 Z
  1. <html>
    ! Q" ^0 f9 K5 e" g
  2. <head>
    - W1 V) }( g: B, i. v
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />2 m  [4 Q5 [, r9 S% Q
  4. <title>无标题文档</title>
    1 [0 }- V" Z$ _% Y
  5. <script language="JavaScript" type="text/javascript">
    0 K" g3 ~! g& D, p- U
  6. var str = "这个是测试用的范例文字";
    2 S) X8 R* `. _6 ]. C. E
  7. var seq = 0;
    * J0 I$ y0 u8 f3 l& O& h1 \
  8. var second=1000; //间隔时间1秒钟! s7 G! [% h7 \( f/ H& D
  9. function scroll() {
    9 r- o+ S* R. r8 `9 f! S% k1 j
  10. msg = str.substring(0, seq+1);- m% U; ~5 X( ?% z
  11. document.getElementByIdx_x_x('word').innerHTML = msg;. r# O; _/ l/ h" h. Q4 t
  12. seq++;
    & r6 h4 A/ q; l5 M
  13. if (seq >= str.length) seq = 0;
    ( m0 g- [# G6 G( _$ g1 c
  14. }
    : r% p; A; b$ m$ l$ G. Z
  15. </script>, Y; |5 v0 L3 j! `2 j$ K0 I# B
  16. </head>
    ! f0 p  W' G; K  u- Q" j
  17. <body onload="setInterval('scroll()',second)">
    " y) h' K) H2 d+ w. J3 x6 V+ e
  18. <div id="word"></div><br/><br/>8 \( E: J+ e3 d
  19. </body>$ V! m& p4 j5 O. K1 o- k
  20. </html>
复制代码
例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。
4 S& T8 c8 N! T9 |; r
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">/ Y# O$ h5 M* i
  2. <html xmlns="http://www.w3.org/1999/xhtml">
    & ~* N- A' W! j5 }) R; t( ~+ i* j
  3. <head>
    8 ^) n" h! x* n8 ]0 F( u
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />6 a5 [' O( Y) v4 z! L: G% n3 }$ @
  5. <title>无标题文档</title>1 n8 X* d% R  i8 W
  6. <script language="JavaScript" type="text/javascript">0 i, {6 w8 @( L# V3 _
  7. var second=5000; //间隔时间5秒钟  L4 D* l1 y- E) Z8 n
  8. var c=0;
    7 M& p' O2 I0 {' q6 ]
  9. function scroll() {& \$ F1 K/ s: h5 ~6 ]1 f
  10. c++;/ ^! g1 E4 x( _% n) |9 ?: w
  11. if ("b" == document.activeElement.id) {
    ) w: H% U5 J1 `1 O% n
  12. var str="定时检查第<b> "+c+" </b>次<br/>";
    ( O/ W9 m( I8 c$ D
  13. if(document.getElementByIdx_x_x('b').value!=""){
    ' G. Y  `2 i8 p7 t; S
  14. str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";" v- x( m9 m+ x9 d6 X
  15. }1 j' H- w/ p9 w
  16. document.getElementByIdx_x_x('word').innerHTML = str;
    # M, j4 _+ f: {" I- E
  17. }0 i: H3 ~5 i; h
  18. }! v3 b, m& i3 v9 w: a2 i& D
  19. </script>4 C  y  L/ a. @% p- B. W" x8 f8 S3 s
  20. </head>/ U7 Y. q) H6 ^6 z* x8 e
  21. <body>- r3 ~( j* Q3 I( [+ W/ c5 H
  22. <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>: p) P8 Y9 f# W- A7 _6 t" l' i
  23. <div id="word"></div><br/><br/>
    & `9 \+ j. c, e7 z5 D1 O  Q
  24. </body>  c; J1 E( P4 ?0 G% m
  25. </html>
复制代码
例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。5 c4 V# c7 F" x2 d. ]" E
  1. <html xmlns="http://www.w3.org/1999/xhtml">0 y: T" I2 ~* w: T
  2. <head>6 X6 G0 q$ w6 x/ Y
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    , ~7 w& X9 k/ ?4 }
  4. <script language="javascript">  _# p6 R) Q, ]1 S. z, J
  5. function count() {
    . m4 z- A7 q" x) d6 x! b/ p
  6. document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";! f- p8 Z; k2 w
  7. setTimeout("alert('十秒钟到!')",10000)# f: ]8 Y/ D" ?- _( X. i- h
  8. }6 x$ `2 ]. K6 e. |3 h: V4 ~5 `' f) k0 W
  9. </script>
    3 f: F4 k5 h3 H( m- B- W
  10. <body>
    0 A; ^$ k- [3 s: n% [
  11. <div id="m"></div>
    8 U1 f  C, c  T  O+ a4 x5 M3 T
  12. <input TYPE="button" value=" 计时开始" onclick="count()">% i2 W$ \4 H, m  h  ]
  13. </body>
    & b+ R- f9 ?  G6 z/ z
  14. </html>
复制代码
例4:倒计时定时跳转9 C. X, |7 w8 {1 i
  1. <html>& P4 t" `+ P' \8 A# Q
  2. <head>0 b( o- ~! \" y% u+ x) C* r
  3.   <base href="<%=basePath%>">
    : j5 ]1 u* ?; P+ M' g
  4.   <title>My JSP 'ds04.jsp' starting page</title>
    / M8 }, a+ E8 m8 s3 S' e! |
  5.   <span id="tiao">3</span>
    2 |3 f; K! U5 g0 X+ N
  6.   <a href="javascript:countDown"> </a>秒后自动跳转……
    : \# O: T( g0 ~. \. T' v  r
  7.   <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>
    3 t# j9 X. c. @9 ^
  8.   <!--脚本开始-->
    # P7 f6 ?2 B# e2 C% L
  9.   <script language="javascript" type="">
    $ P4 q! L2 @) p2 I; a5 }$ I- p2 g$ J
  10. function countDown(secs){
    ; m6 P3 s! I6 q
  11. tiao.innerText=secs;
    ; _0 ^, V7 ?( z0 N6 w+ _2 O- m0 ^; c# n
  12. if(--secs>0)6 n. P' T7 S/ N4 [+ F
  13.   setTimeout("countDown("+secs+")",1000);* v$ l% {3 Z$ K% |7 ?& s9 W3 Z& S
  14. }
    4 H7 D! D0 C$ @7 C
  15. countDown(3);) p5 ^. P3 d4 S) I7 X* Z
  16. </script>
      v3 ]9 P) b7 V' |# b! n
  17.   <!--脚本结束-->" @2 G  H& ~9 D- L
  18. </head>
复制代码
例6:
5 N2 L# C/ n. c2 ?+ ^: ~
  1. <head> ( n% w# Z) i9 m4 q5 L3 a/ h7 D+ z
  2.     <meta http-equiv="refresh" content="2;url='b.html'"> " ?: C. d% d% O4 h
  3. </head>
复制代码
例7:
6 E2 f; V0 W7 w: a4 r9 C. {! N
  1. <script language="javascript" type="text/javascript">
      {! y' S6 m+ s  ^0 G7 _
  2. setTimeout("window.location.href='b.html'", 2000);! N- U- ]- Z( y) i5 U
  3. //下面两个都可以用
    : z* x" i' h0 I# n3 H
  4. //setTimeout("javascript:location.href='b.html'", 2000);
    6 ~; ^: ^% |$ j5 f5 A1 C
  5. //setTimeout("window.location='b.html'", 2000);* |0 j" ~3 J2 p! m/ \( j
  6. </script>
复制代码
例8:
' h& M, I! L3 s1 Z) s
  1. <span id="totalSecond">2</span>
    - _0 ^0 y& N/ \6 B! m4 k" U9 h) h1 I
  2. <script language="javascript" type="text/javascript">, w' J- I: w& a- [; X! }% @
  3. var second = document.getElementByIdx_x('totalSecond').innerHTML;
    ' G  W9 i8 P7 A6 u. o$ w; Q, }
  4. if(isNaN(second)){
    . w: c9 @) Q; C* t% e: Z: l
  5.   //……不是数字的处理方法
    ) H8 Q- w3 l- ~
  6. }else{1 ^& s4 d) Q! B) T' K9 e
  7.   setInterval(function(){
    / J* E: ^  Z$ V& w8 w3 F9 O& p
  8.    document.getElementByIdx_x('totalSecond').innerHTML = --second;# Z9 s3 _) k* o  G- E. i) a- o
  9.    if (second <= 0) {! S$ q8 {: E& g" h0 i# u
  10.     window.location = 'b.html';
    ! A# o7 e3 k% N- `4 p5 ]: {
  11.    }
    % v/ [7 D0 M$ o4 H) m6 Y' k* P% T
  12.   }, 1000);1 M) v) x7 a2 p2 \, O
  13. } ( D! F2 b* o+ q: j! V6 C( h
  14. </script>
复制代码
( {4 s% v1 X; q0 V4 t: s/ p; v

& |$ l  E4 \! `- y
' e7 K# {' P* a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 18:44 , Processed in 0.058971 second(s), 20 queries .

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