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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-7-31 10:57:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1,只执行一次的定时器 & M, d% k& b2 ^  j9 t/ h
  1. <script>
    , h5 P( ^% e" M. ?
  2. //定时器 异步运行
    , _' {* ]. [" }; v
  3. function hello(){
    2 Y& g1 I- G9 v3 J
  4. alert("hello");
    3 w8 h1 h* J' l/ K) n
  5. } / n1 N' j& o% o; w( O
  6. //使用方法名字执行方法
    / y$ ]7 Y) d. c) F
  7. var t1 = window.setTimeout(hello,1000);
    9 l1 b$ |8 J, x
  8. var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法
    & D2 O- X4 |3 i. g, I
  9. window.clearTimeout(t1);//去掉定时器
    % ^5 f1 V  Z! y. n0 E
  10. </script>
复制代码
2,重复执行的定时器
/ q4 L! r4 N9 @/ c! E1 T+ n! C$ h
  1. <script> 2 C+ b  v4 q: T( T$ L' n+ B0 T
  2. function hello(){ ; P+ @5 [3 G6 f0 f, G
  3. alert("hello"); ( D8 G7 z- ~0 ]) g, j/ U2 B
  4. } . f- |/ ?& G. G. w8 `( x
  5. //重复执行某个方法 8 E! @/ y: G! L- g* X
  6. var t1 = window.setInterval(hello,1000); ) F$ k6 k6 Z: ~% V  w6 C
  7. var t2 = window.setInterval("hello()",3000); ! X5 z+ h; @5 s! [7 j/ I, v
  8. //去掉定时器的方法
    ' M& B( C; r- `2 c. [
  9. window.clearInterval(t1); # U/ o9 H+ y! D4 R
  10. </script>
复制代码
备注: 0 x( K- f  N0 `/ W: e3 T5 y

5 f+ o( h7 p+ q) b如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决:
+ v% s( q0 T$ _6 |6 ]可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。
' f( r$ u; N, l& j5 i. B; R# r; }4 T" z  F! A

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

1.倒计定时器:timename=setTimeout("function();",delaytime);
; g% W3 ^, W( S) p2 e/ W: g3 h2.循环定时器:timename=setInterval("function();",delaytime);

第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成
% B; Z+ j4 r3 L2 z- Q: ?5 N“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。+ U7 ^; x$ e* V! E# v5 C1 O
  倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。
% T3 J( b7 p6 _8 {! m  a9 K0 ^  X比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,' @* U* x) C5 e
则需要用到循环定时器“setInterval("function();",delaytime)” 。

获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。
  z5 _- G$ k/ N7 A比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。

定时器:

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

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

setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。
& }, e; ~) m8 P+ hsetTimeout("function",time) 设置一个超时对象

setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.* I+ w/ c( t2 v" ]& j
setInterval("function",time) 设置一个超时对象

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

clearTimeout(对象) 清除已设置的setTimeout对象
* p1 e& W8 j& k* V# UclearInterval(对象) 清除已设置的setInterval对象

略举两例。# D0 z% n" |/ w, y( Q
例1.表单触发或加载时,逐字输出字符串

7 ^* Q! J5 n8 u8 D; s  Q" g. z
  1. <html>
    + |2 u* y; ~4 v6 _+ M, ~! f4 k
  2. <head>
    " t0 f# _: r1 h4 U; C1 r5 m9 {/ V( l9 b
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    " Y/ i* g3 C+ u5 u. h
  4. <title>无标题文档</title>. h4 ^' H# r6 {- U9 S. v- Z* c5 G
  5. <script language="JavaScript" type="text/javascript">
    ; \& Z" w! i8 `) B. p  I0 J: l
  6. var str = "这个是测试用的范例文字";" l2 U* F2 c) [$ l0 X
  7. var seq = 0;1 X% f  W4 {7 y  I7 o& D5 {7 |/ Q
  8. var second=1000; //间隔时间1秒钟, Z; W$ F' v! v- @
  9. function scroll() {
    ! |" m  F- A/ P
  10. msg = str.substring(0, seq+1);7 x8 W2 f* K& O) j
  11. document.getElementByIdx_x_x('word').innerHTML = msg;
    8 m) r6 I1 C7 ^0 r
  12. seq++;
    2 _& U7 t* U: q6 `" g
  13. if (seq >= str.length) seq = 0;
    4 l! X# n  m( h: G
  14. }  l4 F7 j. u4 L! o- O( L) l
  15. </script>
    7 K: x# M# ^. y) H
  16. </head>- L+ d+ n1 a: U4 Y& S
  17. <body onload="setInterval('scroll()',second)">
    8 q& E) o1 }- t, W6 v9 @- X' t( k5 w
  18. <div id="word"></div><br/><br/>
    7 I6 M- \) I# ?- \6 F8 g. @9 v4 [3 D
  19. </body>0 T5 B( {' R  D  d& A. t  w
  20. </html>
复制代码
例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。) T+ R3 \( N/ N" j7 M9 K6 ^
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    9 L7 `- r' C6 b7 }0 j" t9 L
  2. <html xmlns="http://www.w3.org/1999/xhtml">( D, ]/ b2 s: \* D  v1 T
  3. <head>
    / V! H* k0 j- {
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    9 V! d8 G* J$ g, X: C
  5. <title>无标题文档</title>* R9 K. }# `" T! m
  6. <script language="JavaScript" type="text/javascript">
    " ?6 _- \& o! E$ j
  7. var second=5000; //间隔时间5秒钟
    3 t4 l  `: W5 a( @
  8. var c=0;
    ( r- l/ }, c& t4 t9 F' P9 o
  9. function scroll() {
    * d" Z# `8 s, o2 m# e
  10. c++;
    5 s/ b& i4 y; L( e
  11. if ("b" == document.activeElement.id) {+ N2 O. O' [+ c: T, O
  12. var str="定时检查第<b> "+c+" </b>次<br/>";7 A0 {7 o* `5 ?, D0 J7 J9 y
  13. if(document.getElementByIdx_x_x('b').value!=""){" H- S7 W& T5 E& Q
  14. str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";8 u- S& w/ D+ w) U0 ?0 H
  15. }  y5 W0 ]7 k4 i( h& ]( m: Y
  16. document.getElementByIdx_x_x('word').innerHTML = str;
    , q1 g9 A% Z/ p  Q
  17. }7 J% g& Z+ P, w; ~
  18. }
    # r& y6 E. W: o: M
  19. </script>! |6 V2 j$ V, }# H* ?# P" Z# y
  20. </head>
    # R, B; b( w# g! v( r, p. R: K
  21. <body>. f! s2 J* `! o5 u8 ^8 N1 [" \
  22. <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>
    , ]. C7 S8 F/ m4 E
  23. <div id="word"></div><br/><br/>% W6 l+ `- u0 ?; |# Q$ _! F5 I
  24. </body>
    5 l" F# \- R2 i  Y( ?- z
  25. </html>
复制代码
例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。
  Q$ |. D- |8 |* f8 Q+ H
  1. <html xmlns="http://www.w3.org/1999/xhtml">( w8 a( [7 V7 l5 U. @7 z7 u9 X+ q
  2. <head>+ I* E) V' ^! U% e8 H+ w- @8 B4 b7 c, f
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />& }# L1 t2 t/ w9 J
  4. <script language="javascript">3 D; a% o& R6 W% d; W
  5. function count() {7 l. j7 x  b. H  F, n
  6. document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";
    0 ?  ]! s7 P) P
  7. setTimeout("alert('十秒钟到!')",10000)! U! C6 u0 A4 _, c
  8. }) d8 ]$ M# @3 H) ~2 r: [
  9. </script>
    2 m6 W% M/ k6 N
  10. <body>
    / F5 U, T7 l* ?. ]7 {3 p" }
  11. <div id="m"></div>
    1 F- f; U5 ~. P8 y' ^3 C4 Z
  12. <input TYPE="button" value=" 计时开始" onclick="count()">6 ~( w3 [' t& _7 t7 P8 R# x' C
  13. </body>
    3 |# V$ }9 ?" U1 t
  14. </html>
复制代码
例4:倒计时定时跳转
) J. \8 K3 M4 A# B3 X
  1. <html>0 P* W& i! o8 E, l  ?
  2. <head>
    / q( Q* K% c# z- I4 P
  3.   <base href="<%=basePath%>">6 g" ?  a4 j- w" u; o$ a
  4.   <title>My JSP 'ds04.jsp' starting page</title>3 W0 _1 z% N/ [2 z# e2 g
  5.   <span id="tiao">3</span>% i* \( z; ]2 h/ _7 z. N* {
  6.   <a href="javascript:countDown"> </a>秒后自动跳转……
      U6 e# l( Y7 f  U; _
  7.   <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>4 C' [1 R( e  y, D& [( H
  8.   <!--脚本开始-->
    % R0 F% ^: v' ?
  9.   <script language="javascript" type="">
    ( Y) P8 s5 \" h% h/ @+ X" d
  10. function countDown(secs){7 {* `9 r! G. \( m, e
  11. tiao.innerText=secs;3 ~& d# X+ C4 d0 Q$ b
  12. if(--secs>0)3 Z& Q7 B# H9 j
  13.   setTimeout("countDown("+secs+")",1000);
    7 B% w' _$ x4 ?. {4 t. O7 G4 O
  14. }  S3 m' J* }. l/ H$ A  |& }
  15. countDown(3);
    ( d' u  n& `$ {# h; O: |2 h$ `
  16. </script>* X1 h" Q1 C# e9 S7 U
  17.   <!--脚本结束-->
    9 x8 H  F4 W" o: x
  18. </head>
复制代码
例6:
: j8 z9 v" N5 x* N8 y+ W0 h
  1. <head>
    , y9 O4 X7 d8 m
  2.     <meta http-equiv="refresh" content="2;url='b.html'">
    / U7 h3 I3 ^# E! y* q4 Z
  3. </head>
复制代码
例7:8 d7 C1 z! E7 J  o+ C( I
  1. <script language="javascript" type="text/javascript">
    0 c0 x5 H  b( H2 _% r) y, e
  2. setTimeout("window.location.href='b.html'", 2000);
    " Z2 ?: z5 U" [* N2 `; y0 |6 P
  3. //下面两个都可以用% i% w2 O7 c4 `' ^& D
  4. //setTimeout("javascript:location.href='b.html'", 2000);8 C& a9 x* v1 [. s$ l# m
  5. //setTimeout("window.location='b.html'", 2000);
    , N* Z7 O8 @1 j# L* S6 H7 V4 a6 f
  6. </script>
复制代码
例8:+ d! d% Q3 Z- O" @. d  J6 }& S
  1. <span id="totalSecond">2</span>' x, I) q- }: I# t& h3 T
  2. <script language="javascript" type="text/javascript">
    " ^* t' ?; H! Q' a9 t
  3. var second = document.getElementByIdx_x('totalSecond').innerHTML;2 [3 k2 i" \8 G* G+ p( w
  4. if(isNaN(second)){
    : j4 u3 T/ w: W5 H6 F! c5 |: o7 D
  5.   //……不是数字的处理方法
      z1 R8 L' J( d' [: [
  6. }else{. I+ v6 K1 O- I! |
  7.   setInterval(function(){& g! Z; u( t, J* l
  8.    document.getElementByIdx_x('totalSecond').innerHTML = --second;
    + \1 F9 X2 R% [( o# z# R
  9.    if (second <= 0) {
    " t! W1 n6 N2 s! K  _
  10.     window.location = 'b.html';2 n0 w, Z( p% A! b$ d
  11.    }1 m6 l7 T( ^2 a7 M
  12.   }, 1000);
    : p$ ^$ q% F$ h
  13. }
    ; Z- H3 P4 o9 F/ c4 C
  14. </script>
复制代码
1 N* n: s/ r1 U+ n: A! n  a

" U( t* C' G- O/ y7 b, f
3 u6 A% B1 @5 ]9 S$ g$ C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 19:05 , Processed in 0.048448 second(s), 20 queries .

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