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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-7-31 10:57:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1,只执行一次的定时器 " ?0 }) o1 M5 [) c
  1. <script> 7 n6 ~' d6 H" S$ y; p
  2. //定时器 异步运行 9 ?; ]. H! i8 x8 L
  3. function hello(){ 2 f5 t# E  O# }/ [
  4. alert("hello"); 6 l. Y" k6 q7 |: a' o1 _5 S
  5. } & n/ p- V. J1 A4 @: y8 A' T  o
  6. //使用方法名字执行方法
      g# e8 E' d* o0 |8 k/ F! Y5 u/ D
  7. var t1 = window.setTimeout(hello,1000); ! M+ W8 p. E2 \; p
  8. var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法 % p: q! E" S0 P8 }/ }5 @9 w! }
  9. window.clearTimeout(t1);//去掉定时器 ( u; \8 r7 Y# `  a7 [7 S
  10. </script>
复制代码
2,重复执行的定时器 4 X7 [& e, T8 x" W, _
  1. <script>
    ) z: ]) j) d6 |2 N; h  f
  2. function hello(){
    ) }% z7 y4 o) ?2 s2 n& `" _2 m/ l
  3. alert("hello");
    5 o2 ^! r0 U! h6 Q7 q2 d
  4. }
    , Y8 P) L8 j7 \$ a, B
  5. //重复执行某个方法 , Z& O. b' L+ i
  6. var t1 = window.setInterval(hello,1000); $ I; f4 X0 u3 }
  7. var t2 = window.setInterval("hello()",3000); ! D) y' F, e7 ^. U5 z
  8. //去掉定时器的方法
    . T0 z8 [9 a" }, l+ d2 f0 t! ?: x9 T
  9. window.clearInterval(t1); 1 R* `6 t5 ^: a9 F5 [
  10. </script>
复制代码
备注:
, [9 g9 ]5 t+ j* l: d+ W+ u$ d: z
" G0 e% f9 J% F' t如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决: * \, I7 }  I( v. I
可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。
5 P+ |) u; s/ D( B* S! k; C4 B6 a6 J7 L. g% P! k$ h

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

1.倒计定时器:timename=setTimeout("function();",delaytime);8 B) n3 @: E. T1 q- n: k7 {$ ^  R
2.循环定时器:timename=setInterval("function();",delaytime);

第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成. u$ B: E9 c$ U
“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。
2 Z# p( S3 K6 o3 j0 V  `- q8 F  倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。9 b$ _7 D5 }7 G" S) S
比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,
9 s+ W+ I- J8 ?4 y( F则需要用到循环定时器“setInterval("function();",delaytime)” 。

获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。
2 i5 W6 e9 }* T3 n) [6 f比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。

定时器:

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

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

setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。0 @1 }' e* t' R" V* o$ v
setTimeout("function",time) 设置一个超时对象

setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.
1 K+ v! V. X0 F/ q$ }setInterval("function",time) 设置一个超时对象

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

clearTimeout(对象) 清除已设置的setTimeout对象
( m9 o+ T$ C3 _, D5 }4 j( iclearInterval(对象) 清除已设置的setInterval对象

略举两例。" r9 @+ J* C2 }* V2 B/ z& w+ Q  r
例1.表单触发或加载时,逐字输出字符串

" o2 ^- `' u1 b7 e# q" x# f- v4 _
  1. <html>$ ?1 N5 e! u2 d+ M! A
  2. <head>& ], I- R& R5 I) y) r$ Z4 C) L! u
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    / M7 w" ]; h( e. i
  4. <title>无标题文档</title>
    ' d( t4 k- G' _, i3 m+ V
  5. <script language="JavaScript" type="text/javascript">
    : ?5 z4 ^, T0 n# Y" R0 \2 m; U$ J, ?
  6. var str = "这个是测试用的范例文字";
    5 k$ Z1 l" _3 x7 e3 v
  7. var seq = 0;
    * l0 \4 z7 O! U. o2 ^9 I5 W
  8. var second=1000; //间隔时间1秒钟
    2 K0 c$ U  ]2 m  k
  9. function scroll() {3 a1 f8 g1 ?- I  k* c9 |
  10. msg = str.substring(0, seq+1);1 b1 _0 ~$ P5 ^+ K, {3 c
  11. document.getElementByIdx_x_x('word').innerHTML = msg;
    * W1 i& D! |9 s7 ]
  12. seq++;. _: z0 ~. |& f; b1 q
  13. if (seq >= str.length) seq = 0;
    " N) W& ]0 v2 e9 C5 o$ c1 U
  14. }
    ' L' g3 N) W) O
  15. </script>* z$ p. Q' m  Q: F; I
  16. </head>
    % ?; @- c  g: F1 \# H5 f4 ]
  17. <body onload="setInterval('scroll()',second)">
    4 z7 D) p1 |5 X9 ]% j. V
  18. <div id="word"></div><br/><br/>
    % P; C1 t8 e; }9 _8 Q
  19. </body>3 ~$ p0 g1 T2 t% c# y
  20. </html>
复制代码
例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。
: i3 b, z2 L0 n
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">* Q( ~& g. v% v
  2. <html xmlns="http://www.w3.org/1999/xhtml">
    ) G6 M. i3 t9 M# n- f
  3. <head>% W% w9 x2 @# e# V
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />1 n2 J# u1 n/ I
  5. <title>无标题文档</title>
    ! l9 V  J# t' d# g  c# X
  6. <script language="JavaScript" type="text/javascript">% Z& D4 i; ?( f) k+ h" f7 I2 i/ t! f
  7. var second=5000; //间隔时间5秒钟! m: s2 E: p& x& a1 m" u
  8. var c=0;$ ?$ j" ~0 m# s$ j3 W
  9. function scroll() {
    . W7 o6 ?# r8 ?
  10. c++;
    ' \- g0 ]% \1 j+ l* {* C
  11. if ("b" == document.activeElement.id) {
    / T) o' q2 D2 X+ B$ R; ?; i
  12. var str="定时检查第<b> "+c+" </b>次<br/>";; O+ J" ?" w1 R5 n: |* ^
  13. if(document.getElementByIdx_x_x('b').value!=""){
    4 {# q3 `" }* i4 C3 @% o2 N
  14. str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";! d$ b0 W* |5 |2 T+ O) T& ?
  15. }) D9 p- J) V* L3 I) O
  16. document.getElementByIdx_x_x('word').innerHTML = str;) e" A7 S6 b" k" k: A5 i$ w
  17. }
    % X) ^4 t" ?1 e
  18. }; {. e- d8 u9 z% o
  19. </script>6 q6 _- H8 Y! T; ^6 s  _! H
  20. </head>
      t( @6 I9 d. V
  21. <body>
    0 x  u; o& A/ y1 x
  22. <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>. `- Z5 M6 g6 D5 X/ c4 H" I6 u. e
  23. <div id="word"></div><br/><br/>+ s% |- j4 Z0 [( H6 R2 o8 B+ X6 E
  24. </body>8 @  B- R, i- ?8 U; U4 R6 {
  25. </html>
复制代码
例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。4 m& b/ m: a. K0 S. M8 T
  1. <html xmlns="http://www.w3.org/1999/xhtml">
    + h7 W' w4 n% N1 t3 K
  2. <head>- [/ ^- R6 R, m# j
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    7 i; g; K/ {: s6 I& ?2 s) \, A
  4. <script language="javascript">
    $ f; J9 p' ^9 S3 x, m6 i
  5. function count() {
      W" i: e5 f$ {4 b
  6. document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";
    ! ^  G; }7 w0 W
  7. setTimeout("alert('十秒钟到!')",10000)$ [. T1 J# m( l% D2 D8 E% [) Y
  8. }- w' F+ \" S& l& P  A' K# P4 T6 O
  9. </script>3 m0 |% s' v$ \
  10. <body>/ p1 g$ J  h) @5 u1 i# y  M- B
  11. <div id="m"></div>( I0 w2 Q; f. b
  12. <input TYPE="button" value=" 计时开始" onclick="count()">
    # c) A' C: a/ ^/ h6 a; y' c* _
  13. </body>
    5 j* i+ {* _2 R; g
  14. </html>
复制代码
例4:倒计时定时跳转
  u( `7 P& x# r0 L
  1. <html>
    2 b! P- l9 k6 |
  2. <head>" k- ~0 L! U" t4 ~; ]9 X
  3.   <base href="<%=basePath%>">
    / k% i5 Q3 y7 W1 f/ D
  4.   <title>My JSP 'ds04.jsp' starting page</title>/ l7 m" I$ {3 Q& B
  5.   <span id="tiao">3</span>
    8 ]2 |( p4 u5 T: O
  6.   <a href="javascript:countDown"> </a>秒后自动跳转……  l. X7 {+ n. y; _
  7.   <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>' B3 n* \6 j! v
  8.   <!--脚本开始-->; f2 G# R  {4 [& {: v% @2 E# C9 d
  9.   <script language="javascript" type="">* A, v$ D9 f9 B% B
  10. function countDown(secs){/ ^+ |) l  N+ g( Q+ Q
  11. tiao.innerText=secs;2 X1 |  b' j4 S0 H- d
  12. if(--secs>0)
    7 F0 `+ L- U% R3 k0 A8 M8 h
  13.   setTimeout("countDown("+secs+")",1000);. Q4 P2 ~  w/ h; t# A, ^/ N2 b" J
  14. }0 [' o3 V8 D3 z4 ^0 D
  15. countDown(3);
    * g% H5 s! ?9 A( C" C& d
  16. </script>
    7 P+ X5 x  k# ~" e
  17.   <!--脚本结束-->
    1 ]% A( q* f  U$ f! p# U" `& e
  18. </head>
复制代码
例6:2 u5 k. g. q8 w. z0 V, b1 e
  1. <head>
    # T: l$ S9 p- W' ]
  2.     <meta http-equiv="refresh" content="2;url='b.html'">
    % d, |) G! q' ^" o' b! |$ u  M' O
  3. </head>
复制代码
例7:
# b6 V( J8 u: r) h& \) a/ J% Q
  1. <script language="javascript" type="text/javascript">" _( B0 w' G1 Z% c
  2. setTimeout("window.location.href='b.html'", 2000);
    9 |4 n1 C) ?! u7 s3 W
  3. //下面两个都可以用" M/ k9 @- V, G+ M
  4. //setTimeout("javascript:location.href='b.html'", 2000);# q2 r9 k5 Z; {6 q7 Q+ S
  5. //setTimeout("window.location='b.html'", 2000);
    - z! o* I+ R5 t6 R: C
  6. </script>
复制代码
例8:
0 R9 a1 N& H, s" [2 K, m0 A
  1. <span id="totalSecond">2</span>
    . O* b% T. z( b2 g) N
  2. <script language="javascript" type="text/javascript">
    , s+ k# I$ F5 Q  Y) M! T. \
  3. var second = document.getElementByIdx_x('totalSecond').innerHTML;
    & G1 n6 ~$ I4 L4 o' e+ |4 D, x. B9 k# O
  4. if(isNaN(second)){
    9 ?* `" W4 f/ [$ c% V5 a* t
  5.   //……不是数字的处理方法2 [$ n! i2 W  N( c! a
  6. }else{
    + E) Z: J2 X! m( p* T2 B2 B, @9 i# G
  7.   setInterval(function(){) j5 ]& X) j: H7 D. S4 }
  8.    document.getElementByIdx_x('totalSecond').innerHTML = --second;
    & W" f* s; B, K1 X" |# S' G
  9.    if (second <= 0) {, S0 @. _) z& m7 q7 I& i
  10.     window.location = 'b.html';
    & r' _  n3 C# F* ~# X, m; ]
  11.    }7 r. j. T& g( j, o, J/ f
  12.   }, 1000);4 k0 m' Y' v; `4 t- Z
  13. }
    : M* C% n% r, V/ b( Q
  14. </script>
复制代码

! ~, x  y! Y2 G+ M! u+ [0 j7 S6 E' a- u

0 ?7 p! k% {8 H: x! _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-19 08:39 , Processed in 0.107723 second(s), 21 queries .

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