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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-7-31 10:57:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1,只执行一次的定时器   f8 {4 r, ?- O! `
  1. <script>
    # v" P! V9 O2 C1 a) v6 k4 J
  2. //定时器 异步运行
    : v  X- Z  q+ t2 [" B! u
  3. function hello(){ 7 L% x1 ]* U9 m4 W# ]: _
  4. alert("hello"); 8 i" D7 Q* q! k( D. j' X' S- N5 a
  5. }
    % |: z* [2 c9 \
  6. //使用方法名字执行方法
    * h; c/ H, e( }' Z
  7. var t1 = window.setTimeout(hello,1000); . S$ h6 Z8 p  j/ [; R  n* n
  8. var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法 . N6 }8 n8 W2 C. J8 V, V. ^( e& N
  9. window.clearTimeout(t1);//去掉定时器
    1 `2 M: u1 z$ b* Z$ J2 t, t
  10. </script>
复制代码
2,重复执行的定时器
" U' i) z  Y% c8 X. g( b# o
  1. <script> . H0 O# V! C! H0 a$ s6 ?# D5 E
  2. function hello(){
    . I2 b8 O' I) Y+ b; m
  3. alert("hello");
    % e4 h8 B0 E; M4 K# a
  4. } 6 u* x9 v5 Y( c$ j- B
  5. //重复执行某个方法 2 Z6 s6 n9 R! C9 q- u- ^' r2 e
  6. var t1 = window.setInterval(hello,1000);
    , T5 C: Z! n$ T* l+ l, T
  7. var t2 = window.setInterval("hello()",3000); ) A, u9 k: S, g1 ^/ W
  8. //去掉定时器的方法 8 z* K, W; d) ^6 r8 l' Y) s
  9. window.clearInterval(t1); 0 u  e  ]; G6 n4 ~1 S8 Q# x7 a& G
  10. </script>
复制代码
备注:
8 g5 n; \6 y# o6 p, P+ O6 e' ^0 p  u# q$ c9 L9 b
如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决:
& o: ~8 N' s2 b* K2 d可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。3 V% o. o# A+ n4 s; `8 S; G+ s

* o. |1 u; q9 t0 x

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

1.倒计定时器:timename=setTimeout("function();",delaytime);
% M/ V3 t2 `2 V& n- z3 w. [: u+ Y2.循环定时器:timename=setInterval("function();",delaytime);

第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成
" Z. ]: P# d6 A; S“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。
) ?0 X6 g# S/ k3 S6 l  倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。8 L, G1 ^; u+ _/ Z5 u
比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,9 j4 O1 {# h7 z" |& Z
则需要用到循环定时器“setInterval("function();",delaytime)” 。

获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。
- [4 f3 p) T8 n, `比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。

定时器:

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

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

setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。1 p5 v0 \' r+ X* b
setTimeout("function",time) 设置一个超时对象

setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.7 x) e* S  j: `
setInterval("function",time) 设置一个超时对象

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

clearTimeout(对象) 清除已设置的setTimeout对象
# w) ]9 r4 w; ]9 F" v: iclearInterval(对象) 清除已设置的setInterval对象

略举两例。
9 C& b2 l9 N) \# `6 Y例1.表单触发或加载时,逐字输出字符串


/ H+ \& w0 }: S9 Z2 o6 r# `
  1. <html>( m; z7 k- R* d. i3 {' @0 }2 e% v
  2. <head>5 {0 h; p; H8 h/ y& x" @
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    7 H3 m/ R. t, ^$ r0 e$ f
  4. <title>无标题文档</title>/ w( t( b+ y2 ?  R
  5. <script language="JavaScript" type="text/javascript">
    1 D* L2 F7 }# P& }8 ]" M5 V
  6. var str = "这个是测试用的范例文字";
    ' y9 a% b1 L5 R" s
  7. var seq = 0;+ ]; @! f5 i- Y6 c
  8. var second=1000; //间隔时间1秒钟9 X8 b3 z/ _& G8 `% P
  9. function scroll() {3 l( O9 P% R' p) o: L/ Y# G
  10. msg = str.substring(0, seq+1);4 p/ E, o$ o/ k& G4 R
  11. document.getElementByIdx_x_x('word').innerHTML = msg;  a! s5 u1 W. E2 M
  12. seq++;
    + E# Q$ {% u1 `& E0 e! |5 p
  13. if (seq >= str.length) seq = 0;/ t+ J  `! v4 w% E) `& ^
  14. }
    2 \9 i! ?, l6 n0 ?% C' v2 T
  15. </script>; g, S# Q8 l% \) G
  16. </head>
    ; J* c: y7 _+ y+ H+ U5 ]6 _
  17. <body onload="setInterval('scroll()',second)">! i9 G8 p& I7 K' ?% v8 z0 b
  18. <div id="word"></div><br/><br/>4 s. E  i5 |8 P
  19. </body>% o2 i2 r! \; f! Y/ E
  20. </html>
复制代码
例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。
# n7 C" O% ^" `- C# Q! }
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  ~3 R( p  D7 B1 n
  2. <html xmlns="http://www.w3.org/1999/xhtml">' a# h4 t5 Z+ Z; N0 K
  3. <head>
    " Z- v! d, h" t4 ?% ]5 o
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    / c( g8 n  c6 I4 F( y" g
  5. <title>无标题文档</title>
    : u' a7 u! X( W. i
  6. <script language="JavaScript" type="text/javascript">" D/ S. ?. O( x$ S7 y  N
  7. var second=5000; //间隔时间5秒钟
    ) i, t+ W; A* G# r
  8. var c=0;
    : m0 w( S$ a6 r  h, r. g# Q
  9. function scroll() {
    % F5 T) h- L0 ~0 U. t, a7 b6 D3 S
  10. c++;
    ; ~  ^. e' g; @5 N
  11. if ("b" == document.activeElement.id) {$ }( G! H1 W3 g2 p2 W
  12. var str="定时检查第<b> "+c+" </b>次<br/>";
    * Q+ u; i: I4 `# z7 e0 i
  13. if(document.getElementByIdx_x_x('b').value!=""){
    $ w; C* k6 t2 t
  14. str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";
      {0 H1 T" F) N, }3 a4 ~& ^
  15. }) B9 l, u' X/ q! r! L5 |
  16. document.getElementByIdx_x_x('word').innerHTML = str;* p. b* H  N! I
  17. }
    9 s7 }7 W1 ^- O; ]" x- q. z) X) x
  18. }' q+ x+ ?( N0 H0 R) k
  19. </script>/ t7 P# w2 X' o4 p( s1 }/ o
  20. </head>* E6 ]$ X2 E7 Q  i
  21. <body>" E( S1 P% F7 c2 Y
  22. <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>6 q7 ~4 K; U3 z& H: u# d
  23. <div id="word"></div><br/><br/>6 u: n" ~1 ?7 _9 `8 M$ m6 L, ^
  24. </body>
    9 @7 x' o' ?0 L
  25. </html>
复制代码
例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。
1 S7 z1 p8 J' g7 C
  1. <html xmlns="http://www.w3.org/1999/xhtml">) q9 V! q8 z1 P+ K8 M- {
  2. <head>
    ! F: q1 e  j9 k5 E0 o( w
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    6 e8 n0 }# H* Z
  4. <script language="javascript">
    ) I6 L8 I6 G! F- ~7 B
  5. function count() {1 ?- \. O% f- ]! F% d) _9 I  R# N- f
  6. document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";5 c% p8 V7 X! i4 s
  7. setTimeout("alert('十秒钟到!')",10000)
    " z, p  T1 v* i) c, K
  8. }
    ' k7 Q% N! X: _4 O$ d- ]+ J3 q% t
  9. </script>
    % S- }- w: w7 W+ t8 [0 s
  10. <body>( B  v& q9 F. U; }0 k% j: H
  11. <div id="m"></div>
    : _0 n: l, E! M" S1 X+ {7 A
  12. <input TYPE="button" value=" 计时开始" onclick="count()">3 {- }- M; T4 `; @6 v6 d, m! a+ F
  13. </body>
    ' E; p8 _: a/ l, [& m$ P  u# u
  14. </html>
复制代码
例4:倒计时定时跳转1 I2 _" \* _  J
  1. <html>$ b: ~' s+ o# G$ J2 G7 f# a* Q% {
  2. <head>
      H4 W2 O5 O. Q0 ^
  3.   <base href="<%=basePath%>">1 Y7 k3 K9 O8 U& q! C( u$ u9 U
  4.   <title>My JSP 'ds04.jsp' starting page</title>
    / \! v6 z" W( W$ k$ z/ J/ f. ^
  5.   <span id="tiao">3</span>% K" J% C& |* \" L: K( V
  6.   <a href="javascript:countDown"> </a>秒后自动跳转……
    4 g( p; |; |$ `3 [" F, F
  7.   <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>- A1 R6 |$ H3 l. D" V$ G  d! u+ N! @
  8.   <!--脚本开始-->
    5 G- K* U1 B) _* S- T$ B& P2 t
  9.   <script language="javascript" type="">% W/ k0 i; X: x5 S- c3 Q* Y7 V5 A
  10. function countDown(secs){
      s8 W; c$ P# G! ~" y
  11. tiao.innerText=secs;/ W1 r8 U5 t+ `. O9 f2 W$ N
  12. if(--secs>0)' M3 _7 u5 V) ]5 k4 W# ^
  13.   setTimeout("countDown("+secs+")",1000);2 G% i$ h* h" a, Z
  14. }% h- \+ C; u- j( m
  15. countDown(3);
    0 s8 f5 s! s0 d, t
  16. </script>
    0 m; R) Z$ Q: x8 X, y8 Z
  17.   <!--脚本结束-->, l4 Q4 |9 n; y  }: P
  18. </head>
复制代码
例6:6 F5 {$ q/ @' Q- A6 }
  1. <head>
    , b$ v" p( `4 o0 u
  2.     <meta http-equiv="refresh" content="2;url='b.html'"> # I6 d! W, ^( m8 s' Q, ^
  3. </head>
复制代码
例7:- B5 o% g) L4 `$ }
  1. <script language="javascript" type="text/javascript">5 w- F9 s+ Q; U- Y- T% X+ L
  2. setTimeout("window.location.href='b.html'", 2000);
      }  ^3 c8 ]3 e: F( y$ m5 u
  3. //下面两个都可以用
    9 t0 R5 d6 K) P7 u! ?: X
  4. //setTimeout("javascript:location.href='b.html'", 2000);
    . Z  `# f' v4 X% a- J
  5. //setTimeout("window.location='b.html'", 2000);( R; M: d+ N9 C% H; S" ]& ^4 b5 Y
  6. </script>
复制代码
例8:
+ u& G& p+ m7 }
  1. <span id="totalSecond">2</span>
    ; |# {0 a; J/ K% ?+ f
  2. <script language="javascript" type="text/javascript">: v( _# B) W5 `( o# u1 m
  3. var second = document.getElementByIdx_x('totalSecond').innerHTML;
    ( [' t* z5 F/ m- K: C) ]3 l
  4. if(isNaN(second)){
    6 y% f) I- o& \3 L
  5.   //……不是数字的处理方法2 v7 E0 u+ c5 U3 t
  6. }else{1 C: q/ G! N, C3 J" _
  7.   setInterval(function(){$ J# v& ^; b/ j- z/ W- Z; i
  8.    document.getElementByIdx_x('totalSecond').innerHTML = --second;
    2 Y( ]6 g+ t2 t
  9.    if (second <= 0) {7 F' A# q) @/ e/ J
  10.     window.location = 'b.html';
    7 i2 ?9 Z, T% R" X/ b7 {
  11.    }6 d& p. x5 i! h( L( F4 v4 P
  12.   }, 1000);% X2 g, }. D7 S0 c7 G$ s9 }, _! z6 P
  13. } # }) D& Q- a, E0 V' B1 X
  14. </script>
复制代码
8 c5 w8 ~" T% ~8 q
3 t3 B" q% O1 ?+ r( ^, q

* t, ^/ k( _2 n; F' U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-6-20 03:12 , Processed in 0.055334 second(s), 20 queries .

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