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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-7-31 10:57:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1,只执行一次的定时器
1 {) s+ |' H% B) ^1 l& \4 o
  1. <script> & H  d5 Y$ R6 v# ]
  2. //定时器 异步运行 + R* F  m& ]) @. j; r# [" X! t; d
  3. function hello(){
    . D+ c1 P, h5 R* J
  4. alert("hello"); / w( W+ f2 I7 h% y$ F( H
  5. } 7 L7 H7 E( x) v4 j$ m: g* U
  6. //使用方法名字执行方法 ( _) V  R7 o  j( T, }/ N
  7. var t1 = window.setTimeout(hello,1000);
    % O! I  T% Q3 @; \; t
  8. var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法
    ( k! s* ~* V; s& w: y+ a
  9. window.clearTimeout(t1);//去掉定时器 7 x' `- K8 m+ Q* u0 b
  10. </script>
复制代码
2,重复执行的定时器 7 n9 U4 s# X7 ?; \+ F& M. _: ~
  1. <script> . z; k2 V/ b" s5 Y  U
  2. function hello(){
      |; S2 \1 c+ _$ J2 T9 R6 Y
  3. alert("hello");
    ; y  r: H1 e( r
  4. }
    3 B4 c. y4 T4 W
  5. //重复执行某个方法
    6 j/ \# E# L, g& h# j
  6. var t1 = window.setInterval(hello,1000);
    ) u3 B& @. M6 E* G
  7. var t2 = window.setInterval("hello()",3000); " g1 C; t0 O7 ^/ s) Z
  8. //去掉定时器的方法
    8 I7 y  R2 F& V/ X! ?- q5 ~
  9. window.clearInterval(t1); 5 _# s& W  @$ V8 I, J5 G. B
  10. </script>
复制代码
备注:
' S. @  b! K# \$ R) t  ?( K7 ^! f  S& `2 O6 S
如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决:
" r& L, L, s' S4 r5 S7 \可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。
1 a. m$ V; N" K% j# M( V1 ]4 @- \5 h  r$ P& K+ `2 b

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

1.倒计定时器:timename=setTimeout("function();",delaytime);
+ H) U% R$ j! S7 z8 k, ^, G( }2.循环定时器:timename=setInterval("function();",delaytime);

第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成
. M' y4 F& u$ O6 |( q; U; e“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。
* R! u$ k7 |4 R5 K  倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。
! X; @9 Q. J/ x" U7 F0 r- a4 O+ n比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,
6 v1 o; r2 p0 z  A2 x/ `# Y* @则需要用到循环定时器“setInterval("function();",delaytime)” 。

获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。- w0 x+ b1 O, b
比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。

定时器:

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

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

setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。! B2 G$ S- m* f8 ?( i6 P
setTimeout("function",time) 设置一个超时对象

setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.9 L9 P1 i/ \* ]8 E5 v2 I; q
setInterval("function",time) 设置一个超时对象

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

clearTimeout(对象) 清除已设置的setTimeout对象
3 a8 q9 F" i. u+ \6 Y% uclearInterval(对象) 清除已设置的setInterval对象

略举两例。
1 Q1 w# v& c! ^1 q) t2 q例1.表单触发或加载时,逐字输出字符串

* G( A/ G+ r% `! B6 y3 B5 P
  1. <html>
    # p1 L/ U" r/ k; x- f/ v1 T
  2. <head>
    : B- \8 |/ d/ N8 R6 B, v8 g9 t
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    2 a$ ^2 G+ v+ q9 i, S* z  |, |- e4 ]
  4. <title>无标题文档</title>
    ( n' p& z( @4 S' a6 I
  5. <script language="JavaScript" type="text/javascript">
      ?0 j5 G1 ~2 ?0 i4 F
  6. var str = "这个是测试用的范例文字";
    . X* t& x( w0 g( ^
  7. var seq = 0;: t) \9 n* @/ K1 a9 R
  8. var second=1000; //间隔时间1秒钟
    & p5 h& P9 N8 Z4 J0 }
  9. function scroll() {9 ?2 }! s) L, h7 `4 F
  10. msg = str.substring(0, seq+1);
    % y1 w7 Z" ~# V: N% v- c3 N0 S
  11. document.getElementByIdx_x_x('word').innerHTML = msg;3 g% O8 m/ `  L8 }- D
  12. seq++;
    " N1 J& t6 B7 Q1 W: R: `
  13. if (seq >= str.length) seq = 0;
    2 F1 a/ P3 M2 T/ O3 k/ w
  14. }
    , z: b8 ~7 i  l% s6 R5 H& }! w
  15. </script>/ T6 \  P; d, g4 C+ k) _" L6 ~
  16. </head>) H# k) U5 u. v* ?0 q& H* p
  17. <body onload="setInterval('scroll()',second)">4 ]- A# V( p6 O+ W4 o
  18. <div id="word"></div><br/><br/>
    & J, @: Z; J6 U, U: O
  19. </body>" A8 F9 ^0 v, Z: Q& S, [
  20. </html>
复制代码
例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。
7 ]! j7 ^; P: V9 M9 x8 N( m
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    6 y" o* A% U- |. u# @: B$ M
  2. <html xmlns="http://www.w3.org/1999/xhtml">$ f$ b+ v9 \; ?1 P: {- w4 M9 J
  3. <head>
    9 B' d$ N% p& C' @0 c- x
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />4 o2 S( Z8 U  _
  5. <title>无标题文档</title>
    # \- P/ c6 j3 }' B
  6. <script language="JavaScript" type="text/javascript">
    % U! i( [' b" _6 M' i$ M
  7. var second=5000; //间隔时间5秒钟( O* @. {9 q5 F
  8. var c=0;2 P4 u4 r  K  `5 h/ S' V6 _
  9. function scroll() {. ^* A/ M$ e* ]( w; b1 [
  10. c++;) z. v( Z5 k! o' `2 ^) E
  11. if ("b" == document.activeElement.id) {
      \( }$ {3 k; [& _
  12. var str="定时检查第<b> "+c+" </b>次<br/>";1 ~3 K6 E) L5 o" v) A
  13. if(document.getElementByIdx_x_x('b').value!=""){
    " P" {0 F6 j( t: F% c; w
  14. str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";
    - z! I2 z% l& T6 F" g0 X0 t/ |3 ]
  15. }
    : A$ a2 A9 a! b* [
  16. document.getElementByIdx_x_x('word').innerHTML = str;
      ~+ t' F$ s4 l1 [! S0 ]% T; u2 a
  17. }( D4 C& E* P! F  D6 `3 x0 K, e. Z
  18. }. _* D; c" A8 C( B, E" |- W, d; W  }
  19. </script>& n! `' O3 `, u/ _) n
  20. </head>
    % o2 S- \, Z5 r3 H9 \
  21. <body>! ~: x3 G" ]: h& P4 Q8 L2 y( u* R
  22. <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>( e" ]1 e( i) T
  23. <div id="word"></div><br/><br/># p: O3 Q: L* A
  24. </body>5 a% y" \$ L# ^2 m( @+ r
  25. </html>
复制代码
例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。
8 o7 w1 Z+ C4 y( X4 i& I6 z
  1. <html xmlns="http://www.w3.org/1999/xhtml">
    2 M* o+ @7 n# a# g1 G; G  N, q) L, A
  2. <head>
    ! w% Z; A# Q0 _) ^6 {
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />! C7 w8 d* h5 V3 [7 `
  4. <script language="javascript">1 x# E9 \/ t# J3 ~) V$ j
  5. function count() {
    / Z" e7 v+ p) p% `' H
  6. document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";( Y( w6 v  H; s5 H; E
  7. setTimeout("alert('十秒钟到!')",10000)9 Y( W( h  \* z8 {5 ?4 h
  8. }
    8 z/ U; C# ~5 ~7 D/ b) Q% a
  9. </script>
    % _  P4 }7 R7 W; {8 V# {
  10. <body>: o* U% a( N1 R; T
  11. <div id="m"></div>0 K, W1 z. L0 l4 Q/ W
  12. <input TYPE="button" value=" 计时开始" onclick="count()">$ a4 u9 O& i1 x" H6 d( s
  13. </body>: @7 _% G7 w7 N
  14. </html>
复制代码
例4:倒计时定时跳转
0 Q% d, D; |5 R+ O+ o
  1. <html>' U4 T. x( z2 a5 Z% J6 C( P
  2. <head>' A9 I6 i5 g' N
  3.   <base href="<%=basePath%>">" b, b) {3 l7 s) a# D
  4.   <title>My JSP 'ds04.jsp' starting page</title>
    : t! p! [; w" i2 n. W: h$ N
  5.   <span id="tiao">3</span>1 D. t0 D% u4 M0 F4 K0 M8 d
  6.   <a href="javascript:countDown"> </a>秒后自动跳转……
    / n3 s2 _: e4 \% D# Y$ p# _
  7.   <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>
    # _* J+ c! q5 A& _5 ?+ K2 X
  8.   <!--脚本开始-->
    % A3 \: s1 M" @
  9.   <script language="javascript" type="">
    , b( p! \1 \0 l' T% M: |7 U& c
  10. function countDown(secs){
    6 b1 }' T6 U& M
  11. tiao.innerText=secs;
    & q) U1 A! A% C% b- u- o
  12. if(--secs>0)6 H! Q6 ], d7 |4 m5 c. a/ N
  13.   setTimeout("countDown("+secs+")",1000);
    5 A6 W* G( I( P& w
  14. }. J: A% C! u  q
  15. countDown(3);% ~6 c' ~! [( a, P  _1 N
  16. </script>
    % q9 x: I# I6 v' X) t2 ?  @) X4 p
  17.   <!--脚本结束-->
    : F( Y$ J( A4 z0 U- c3 T5 T( F
  18. </head>
复制代码
例6:' \  f! z: A. [/ d' m  J) U
  1. <head> 2 f9 ?/ n* U5 I/ v
  2.     <meta http-equiv="refresh" content="2;url='b.html'">
    & G5 C7 v4 O9 q
  3. </head>
复制代码
例7:# q! s# s4 D$ s7 C2 @. m, p
  1. <script language="javascript" type="text/javascript">+ A& s* W" N/ e4 I
  2. setTimeout("window.location.href='b.html'", 2000);
    6 \3 k. F6 ]) Z7 `$ W7 P0 x" E
  3. //下面两个都可以用; L3 g0 M: y$ I: Y! X  f7 n
  4. //setTimeout("javascript:location.href='b.html'", 2000);
    ; F( X( I5 s6 L$ E5 L
  5. //setTimeout("window.location='b.html'", 2000);. ~' n$ z9 V- E6 X# Q6 s* \! }3 ]
  6. </script>
复制代码
例8:
; K: G7 T6 P2 W, P# c- }8 {7 g  {
  1. <span id="totalSecond">2</span>
    9 |, g+ `1 `1 A5 ]; ^* K& v
  2. <script language="javascript" type="text/javascript">
    ! `  g8 [4 [  T0 t6 D" d
  3. var second = document.getElementByIdx_x('totalSecond').innerHTML;! k0 F4 I  m6 A* I
  4. if(isNaN(second)){! J3 ^8 P' |- I: r
  5.   //……不是数字的处理方法! S" G0 ]5 m3 z# O
  6. }else{: m1 W. h/ z/ Z" U
  7.   setInterval(function(){! A% O& C! @$ j' y' \" f. Y
  8.    document.getElementByIdx_x('totalSecond').innerHTML = --second;( Z( p: ~) @& F/ t
  9.    if (second <= 0) {
    & Y; {) ~; H: e' |# V
  10.     window.location = 'b.html';# r$ f# u' l+ h# o+ m  R  S
  11.    }8 r3 ^7 R( E, X5 B) R
  12.   }, 1000);
    7 m) `- U  }' Y4 N% R& d
  13. }
    ! q1 S/ P4 K9 A" H1 Z( w& \4 @" n
  14. </script>
复制代码

8 W7 v0 X' k  h  o& i+ y0 P
7 H2 T% h$ f6 O" K1 z& w0 c0 o- l8 m+ j" m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-9-21 03:18 , Processed in 0.052167 second(s), 19 queries .

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