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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
跳转到指定楼层
楼主
发表于 2018-7-31 10:57:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1,只执行一次的定时器 ) R& `0 |) m* A; ]$ B! H  p. m
  1. <script>
    + W2 ~0 Y4 c) t/ y9 u5 [' A' `2 U) V
  2. //定时器 异步运行 : j: j1 i  O0 \. ~% x
  3. function hello(){
    7 s) ~) c, w3 q) `
  4. alert("hello"); , i/ @+ E7 R# ~! I7 H5 P9 N
  5. }
    6 t$ H; o+ V" a4 D- k4 ^9 @5 z
  6. //使用方法名字执行方法 . `; O- Z" T' z& w  P8 B
  7. var t1 = window.setTimeout(hello,1000);
    4 N& f1 M( r  f' F( {# P
  8. var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法
    8 h! S; g% i% E' P$ K3 O; Y/ M
  9. window.clearTimeout(t1);//去掉定时器 6 j- e/ f- C. I/ M# p  ?. J
  10. </script>
复制代码
2,重复执行的定时器 * p" Y4 S! ]; `" w5 ]) \; s  }
  1. <script>
    4 E9 B# B0 x' Z! j9 g
  2. function hello(){ 8 w$ C! S* f0 L8 k, s. W( y: m
  3. alert("hello");
    ' r' b1 ~2 I& _; C) E; Z1 ^8 \, j
  4. }   l7 J, v+ h* @# b8 k
  5. //重复执行某个方法
    ( i7 n: o; B; M0 ]4 v1 j! C
  6. var t1 = window.setInterval(hello,1000);
    2 S, c1 i) e) J# p
  7. var t2 = window.setInterval("hello()",3000); . V. @' ]4 T, A$ ~+ t6 h" Q
  8. //去掉定时器的方法
    + N, A$ @& s) i6 M3 Z2 x( T  ?- h
  9. window.clearInterval(t1); 2 B  i9 q" F8 b! m  u9 g
  10. </script>
复制代码
备注:
( T$ `) m) d3 W0 r# C! x! u% O) d
' M  f7 _& t. w  R* b% }) x0 J如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决: 7 r# u* v* _& A0 L
可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。; L  {+ T7 D# m

2 @- _2 k' N8 v3 E

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

1.倒计定时器:timename=setTimeout("function();",delaytime);
* N+ G, W" B3 S2 i3 h2 b# y2.循环定时器:timename=setInterval("function();",delaytime);

第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成2 {6 p' P7 t1 C& m6 B
“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。/ b; c& p6 E+ Y/ m! M/ b  @. j
  倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。. r" P# `4 ]/ {- p0 `( ]# t
比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,
5 K! |$ z! _/ R  E. K  S( M则需要用到循环定时器“setInterval("function();",delaytime)” 。

获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。
, c# T5 _- ?3 H) u比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。

定时器:

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

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

setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。2 v/ T, T5 T, l0 u. C2 Y5 u
setTimeout("function",time) 设置一个超时对象

setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.
, ^4 n+ f% N5 w+ q$ l' ?) L* lsetInterval("function",time) 设置一个超时对象

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

clearTimeout(对象) 清除已设置的setTimeout对象
& X1 H+ N2 a9 _8 Q( @9 v. b; rclearInterval(对象) 清除已设置的setInterval对象

略举两例。
; b3 J7 j. S: i4 [) Z例1.表单触发或加载时,逐字输出字符串

+ ^) l# J9 S6 l  m7 e
  1. <html>6 f/ ?) P- S: P9 k5 Z$ e$ _9 r
  2. <head>: B& r. f8 Z& i' o( U6 P
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    - e$ m- k0 ]- ]7 b( @( {
  4. <title>无标题文档</title>$ k! g; J5 C, r
  5. <script language="JavaScript" type="text/javascript">  [) i0 K- ~5 c3 |6 l9 W
  6. var str = "这个是测试用的范例文字";
    1 w! T% z9 i9 T- u
  7. var seq = 0;
    2 i; U5 R2 |( l2 K4 @
  8. var second=1000; //间隔时间1秒钟
    + a3 n' i5 x" F. A: c' p8 j
  9. function scroll() {0 l* U  ~) z" u1 e! M& ^& A
  10. msg = str.substring(0, seq+1);
    0 j' g* F" F) {, i0 c
  11. document.getElementByIdx_x_x('word').innerHTML = msg;% M/ @. C# S+ F5 h* R
  12. seq++;
    2 F+ Y& z! ?2 s
  13. if (seq >= str.length) seq = 0;
    # a- ~0 H. Y3 l- O2 m! D
  14. }0 ?2 G* @$ |8 F: f
  15. </script>5 L) M8 y. j% T8 I
  16. </head>9 g; K$ M" ?: r% _; n
  17. <body onload="setInterval('scroll()',second)">
    % @! S8 m8 I) V
  18. <div id="word"></div><br/><br/>
    ! L, [, [4 |9 y2 I# ?
  19. </body>2 e4 k) Q( U% n3 Y* D/ i
  20. </html>
复制代码
例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。, D$ J# ]4 t) [6 w1 J
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' G( Z- `* j6 h
  2. <html xmlns="http://www.w3.org/1999/xhtml">/ f/ v4 L) ^1 p( z
  3. <head>$ |) m  Y: s$ M7 R" Y
  4. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />$ T8 y9 ^- Q4 K2 \5 x- O" i
  5. <title>无标题文档</title>
    ! J2 b- W8 P) D4 ^5 J8 Q" y
  6. <script language="JavaScript" type="text/javascript">0 B% V- b  N" J  s3 ?
  7. var second=5000; //间隔时间5秒钟
    9 }3 L- q& v3 X: o# Y6 W
  8. var c=0;8 W. m6 @) G7 e' {' M( D  B
  9. function scroll() {: G5 F+ Y3 q8 r. x# e& s% u' H& A
  10. c++;9 o& ?) B7 C9 R- r2 `
  11. if ("b" == document.activeElement.id) {3 V4 L1 ~4 V& R: ]- I  W6 ~  k! Z
  12. var str="定时检查第<b> "+c+" </b>次<br/>";# n3 o" T/ s3 f; A& k
  13. if(document.getElementByIdx_x_x('b').value!=""){
    1 @) ]. i0 l3 B3 z1 U
  14. str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";
    ; F1 o' ?) f$ g6 _" J* J
  15. }
    ( X" W8 E: j0 L5 {
  16. document.getElementByIdx_x_x('word').innerHTML = str;
    : C! Y8 t/ `5 @
  17. }
    7 V6 A8 c7 s. t; e
  18. }9 H6 \4 A; ~+ I4 f2 j" W$ H! Z
  19. </script>7 D; U' c' I7 M
  20. </head>
    + Z% |9 S/ |: b- \
  21. <body>' c7 ~- S' o( n8 |' o
  22. <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>. t) s% v8 S, X
  23. <div id="word"></div><br/><br/>
    9 ~% \! G8 h. R9 e$ o
  24. </body>
    ' E" n. h# ?$ |" ?' I6 _9 e0 e0 Z0 ~
  25. </html>
复制代码
例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。& w+ x* S0 i1 H5 n- |- x- }. G
  1. <html xmlns="http://www.w3.org/1999/xhtml">
    ( j. e/ i) q- V6 M0 k
  2. <head>5 l4 L) I  e% \% W" L% S0 P
  3. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />7 W- o" Q0 C$ _( N* x
  4. <script language="javascript">
    / K# y* T0 M, e# Y3 X3 I
  5. function count() {: P# b9 {8 x) K+ K. r
  6. document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";, ]8 A+ C0 ~- w+ u5 z7 N1 D
  7. setTimeout("alert('十秒钟到!')",10000)2 Y: S+ k" n- l1 y# T
  8. }, [# g4 B  P9 d6 j3 x. _6 O; ?5 r* @
  9. </script>6 i. {+ K! @( s4 P; J
  10. <body>
    % P) G3 \$ _( `
  11. <div id="m"></div>
    0 W3 ?4 G- u- [4 y
  12. <input TYPE="button" value=" 计时开始" onclick="count()">
    ; j! z5 Q8 F% E+ v6 Y
  13. </body>
    1 B1 q* y+ z2 |" }* E1 C  K9 N
  14. </html>
复制代码
例4:倒计时定时跳转
) R9 f( Z8 N" f4 [8 ]8 a4 f; B- a
  1. <html>
    / D( t, b. Z1 M5 e) [" t' D- R) U3 ~
  2. <head>0 n5 N# E  @$ a( W- A3 e
  3.   <base href="<%=basePath%>">
    0 Y0 V/ F6 `6 e. X( l; H& x% U. p
  4.   <title>My JSP 'ds04.jsp' starting page</title>
    * h7 S0 s0 R. A  `: B2 i* c
  5.   <span id="tiao">3</span>
    / ]+ O& G0 Y8 ]4 k
  6.   <a href="javascript:countDown"> </a>秒后自动跳转……- ]8 D0 l& J5 V- w0 Z# Y) B
  7.   <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>
    0 R! C) f1 b0 z( Q) ?) T5 F* A5 _
  8.   <!--脚本开始-->
    % M7 x+ ^0 m& m4 V9 x$ z
  9.   <script language="javascript" type="">/ D7 q1 l9 E0 `2 N+ F; X) r
  10. function countDown(secs){0 u- `6 G5 w* ?6 y7 t
  11. tiao.innerText=secs;) z2 A% ]" X6 x7 a- D: {+ ^
  12. if(--secs>0); ?: x' G3 u- s$ P% t; I
  13.   setTimeout("countDown("+secs+")",1000);6 Q' p; U7 s2 z0 E. o7 R( ?7 a
  14. }
    2 J& K: h  z" J1 N9 U( N
  15. countDown(3);# X* c+ H: S9 P4 _5 ^' K
  16. </script>
    & N. f) j3 X* {/ N% W$ F7 I
  17.   <!--脚本结束-->, ?, R) Z7 v( ]. [8 T5 L4 Q# Y4 B
  18. </head>
复制代码
例6:2 U5 W( o* r, B) H. P
  1. <head>
    4 k  d% X0 m; M+ `% _
  2.     <meta http-equiv="refresh" content="2;url='b.html'">
    % Q7 J9 N# I( x) p
  3. </head>
复制代码
例7:
8 X7 u# Q# k0 N; O( {6 [
  1. <script language="javascript" type="text/javascript">
    9 b, C& \0 h( \$ H1 T9 V2 R
  2. setTimeout("window.location.href='b.html'", 2000);
    0 ?( _, _6 a0 W1 a  V( K  `8 L0 v
  3. //下面两个都可以用
    % A0 a  n! X6 N# l; p, {; s
  4. //setTimeout("javascript:location.href='b.html'", 2000);0 y4 `. b5 O+ w9 v4 B
  5. //setTimeout("window.location='b.html'", 2000);
    0 ?1 {3 H( }3 d: a
  6. </script>
复制代码
例8:+ P; X; C8 d2 Y) i
  1. <span id="totalSecond">2</span>
    & C3 ~4 z0 k: H2 C" _
  2. <script language="javascript" type="text/javascript">6 ?6 i5 W) M8 n( G+ X' e, o
  3. var second = document.getElementByIdx_x('totalSecond').innerHTML;
    * J9 C* A- g# r8 q# y4 E
  4. if(isNaN(second)){; E: ~" }* [  _. g, D4 }
  5.   //……不是数字的处理方法
    % N# \% Y& C$ L
  6. }else{
      a9 K& U$ W' Q1 K1 W3 Y" x' n
  7.   setInterval(function(){/ ~* R) M: P5 R3 K8 I6 }# e
  8.    document.getElementByIdx_x('totalSecond').innerHTML = --second;
    , A' i* _' A) J, t( n* A& i
  9.    if (second <= 0) {7 R8 Y* d& M, ^  z
  10.     window.location = 'b.html';' M5 v+ w% ?4 X# B( R+ q% [
  11.    }# X' c) f( N$ a" e3 `# e' }& l; b
  12.   }, 1000);
      ]) I+ g+ b7 q6 W- `) s7 u
  13. }
    / [3 C) Q9 A9 T. V  `
  14. </script>
复制代码
% h6 ~; p( f8 }' t4 m
" [+ h* P" [1 J! [

2 {) D2 `$ I7 _2 G0 c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 20:19 , Processed in 0.066933 second(s), 20 queries .

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