cncml手绘网
标题: js定时器(执行一次、重复执行) [打印本页]
作者: admin 时间: 2018-7-31 10:57
标题: js定时器(执行一次、重复执行)
1,只执行一次的定时器
|5 R) E! V7 ~3 ]- U8 k* [- <script> 4 N5 g( T4 k4 r) t4 \, ^. l( o
- //定时器 异步运行 4 d2 s `1 o7 W3 [1 N; V; s: V1 F
- function hello(){ . D" {3 X' N s7 w0 [' q
- alert("hello"); * N% y& {3 M' U0 N0 d3 g( u* I( e
- }
, S* c- s7 O& | - //使用方法名字执行方法
% E, k: M* E2 @ - var t1 = window.setTimeout(hello,1000); 3 H2 m- C! m; r9 h/ U/ U
- var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法
: H6 s( g1 y+ J* f2 ? - window.clearTimeout(t1);//去掉定时器
" ?9 M$ Y3 H% A! K* x; o - </script>
复制代码 2,重复执行的定时器 7 D; E# {5 v- B0 u2 Y1 P
- <script>
n& T0 E3 J, F. `# ~* S - function hello(){
% e/ h3 t) X: ]8 ^ - alert("hello"); ' o( M; g' s% w4 U6 w/ _8 D7 M- c9 S
- }
! r3 S. q) C8 h6 m2 a+ s; q - //重复执行某个方法 / ^' x) e% c: f5 J ]( y
- var t1 = window.setInterval(hello,1000);
& P. G0 F. {) I+ M - var t2 = window.setInterval("hello()",3000); ; W2 E# j. L, `$ h& E7 Q9 o8 q) L
- //去掉定时器的方法
' K) z, H8 p, a1 \0 P' c - window.clearInterval(t1);
6 w5 z7 ` |+ j" B; R2 w9 S \! p - </script>
复制代码 备注: ' c% O9 y: q; Y- C8 ?
2 c& w% G1 u0 W, K) n% X- Q i
如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决: 9 y$ r$ O* i o1 j# r) o
可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。
4 M0 F$ ^. H- C. B& o) d" z1 B4 K- ]" i/ f6 w
在javascritp中,有两个关于定时器的专用函数,分别为:
1.倒计定时器:timename=setTimeout("function();",delaytime);
# c) [. g @: T6 }2 \4 _9 t2.循环定时器:timename=setInterval("function();",delaytime);
第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成1 k: b: V/ `6 B1 |; o) I e# D4 V2 w
“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。( G) e3 z$ G0 K, ]) j- I1 A( B1 o
倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。
; q+ |; S5 e8 a4 W8 L比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,
. x2 ] J9 x6 w) \则需要用到循环定时器“setInterval("function();",delaytime)” 。
获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。, N" n/ j; e. {2 c3 p' H# @+ B+ E
比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。
定时器:
用以指定在一段特定的时间后执行某段程序。
JS中定时执行,setTimeout和setInterval的区别,以及l解除方法
setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。/ f1 h. X7 S, y1 L% W
setTimeout("function",time) 设置一个超时对象
setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.
8 ]0 Y7 e/ p# v9 W+ usetInterval("function",time) 设置一个超时对象
SetInterval为自动重复,setTimeout不会重复。
clearTimeout(对象) 清除已设置的setTimeout对象. O5 w* k) g% [$ j3 k' m' s* V
clearInterval(对象) 清除已设置的setInterval对象
略举两例。
' `; S( q0 G- s9 N- f; y例1.表单触发或加载时,逐字输出字符串
6 l7 }8 W# ]. G5 [! |( w; e
- <html>" s% u8 t7 w' x+ V$ O
- <head>/ N2 Z5 \' h5 S% w0 {
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
" e- p1 z1 _" b( n; ] - <title>无标题文档</title>
- j/ E7 z& e3 t4 M8 \+ Z) @0 o: u6 { - <script language="JavaScript" type="text/javascript">
$ ?% N# g( b; f A: u - var str = "这个是测试用的范例文字";0 L* i& w5 V( q* p
- var seq = 0;
; x% a- O, b, H, v7 ^% v1 E$ Y - var second=1000; //间隔时间1秒钟
$ A8 I: u6 J3 e8 {: S: N; e( ]4 N - function scroll() {
5 _# {8 R5 z. B6 n - msg = str.substring(0, seq+1);% {0 X t/ f" I7 \; G( R) j
- document.getElementByIdx_x_x('word').innerHTML = msg;) G- i# }4 b# F
- seq++;
2 p+ R: j, `2 c/ o" c5 V& k - if (seq >= str.length) seq = 0;
# m/ E1 _5 E& H' e$ a - }
# d: r/ H; g, v: e x5 N" I - </script>3 c# L9 l+ y! {# u( T: X+ e7 U
- </head>
0 W/ v7 z( l& X6 } - <body onload="setInterval('scroll()',second)">
7 {# W# X, j) f |) r$ L. V4 s' @ - <div id="word"></div><br/><br/>
6 C/ {& y$ @. c - </body>/ }8 @* F! G; |& ^
- </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。( b9 R, a+ V7 {
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' ?1 F8 d4 \5 O! H$ ?
- <html xmlns="http://www.w3.org/1999/xhtml">6 Z/ V8 a( y+ t
- <head>; ^2 E, b6 e$ A; B" b
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
- Y% D, j; `/ q6 }$ X% ` - <title>无标题文档</title>; u6 f2 o. f" U( N
- <script language="JavaScript" type="text/javascript">
f* }9 |, K/ ^' u - var second=5000; //间隔时间5秒钟) F# O; A# K: W) W$ c; n
- var c=0;1 }7 q* S: y7 j; }
- function scroll() {
* u. j$ G& ]9 ]' s# H - c++;
7 E- G3 `$ [+ I5 t - if ("b" == document.activeElement.id) {
& H: m0 P0 J6 L {. O, D) d$ T - var str="定时检查第<b> "+c+" </b>次<br/>";; d/ H4 f8 s& S* [* ]( r1 J' i
- if(document.getElementByIdx_x_x('b').value!=""){# S x) N. s$ w P+ r
- str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";- p0 c# r% t4 }, t& g
- }8 ], H+ P3 l: y D! e. k' _
- document.getElementByIdx_x_x('word').innerHTML = str;" q3 d4 C. U0 M
- }4 H/ w: L* @* T
- }2 U( F9 E; U# {9 m) p5 H) J
- </script>/ U' {6 i" p1 ^& ~7 j2 g# U
- </head>
1 x0 F0 l `3 {1 I7 ?' k# B - <body>2 ^8 L0 p7 I. Y% x! G/ j
- <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>
2 f$ c P" X( W/ j. u; K& j9 l; V - <div id="word"></div><br/><br/>5 U8 i8 |0 o+ d
- </body>
: k! s6 Y% T" g: Z5 F - </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。! b+ ^- a; w' r6 I* E
- <html xmlns="http://www.w3.org/1999/xhtml">
8 {6 l c: m: J/ }( R6 V - <head>% F( l" v; D6 t: B5 L& A
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
3 B! q% c6 P2 p# z - <script language="javascript">
0 `7 K" o. I/ J) o1 u- U6 ~7 M5 P - function count() {* j5 H4 ^( ?5 ?6 M! R
- document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";' s+ d! t: a7 T* W2 p- j4 u3 X
- setTimeout("alert('十秒钟到!')",10000)2 k V: u9 W9 U, ]0 q( T$ C
- }
: h' N: k4 O8 }. C# }4 F - </script>: f# R' Z0 B) j
- <body>5 P; C2 q0 [" f1 Q R$ z) w
- <div id="m"></div>
. V: @% k" d4 I. G - <input TYPE="button" value=" 计时开始" onclick="count()">7 Q6 V4 F" ^* V: D2 ~! G0 b. w
- </body>
, G# H! V; b- B; i b9 k6 Y7 j+ v - </html>
复制代码 例4:倒计时定时跳转
. u3 q& f9 O6 i: A* @ e2 Z- <html>
$ Y' s( d, A9 k - <head>
+ T! J! s. \7 Q& f! S; A5 E8 [ - <base href="<%=basePath%>">
- ~2 C7 `5 F% y0 T* S+ F - <title>My JSP 'ds04.jsp' starting page</title>/ s" \* e1 f* O: q: G! a
- <span id="tiao">3</span>
, M( x A' P5 Y3 [ - <a href="javascript:countDown"> </a>秒后自动跳转……
4 W! m8 m. X$ Z+ v3 Q/ U - <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>/ g4 s" o% r3 r9 r
- <!--脚本开始-->9 H `2 c. [& G- x- l( g7 f
- <script language="javascript" type="">* o- h- @) a& j( _) R2 M. [
- function countDown(secs){, z% P3 w7 E4 R4 s
- tiao.innerText=secs;
9 \1 M- s. G" `2 p% Q - if(--secs>0)
- `7 c) R9 d1 M+ |3 E - setTimeout("countDown("+secs+")",1000);
5 b( {6 [+ q, y - }
$ s E4 b$ ^0 x/ s5 R - countDown(3);
. c! \, Y% K0 \. u+ ]" F: A9 {* f/ ? - </script>4 {8 J% Z$ B9 _6 N5 v2 Z2 c' H
- <!--脚本结束-->
9 s7 V2 v2 P4 g: G0 s6 S - </head>
复制代码 例6:) P* v; A t8 f! C
- <head> + g' n9 u3 R. }; _* O
- <meta http-equiv="refresh" content="2;url='b.html'">
P% y$ |! w) I1 n8 @ - </head>
复制代码 例7:
$ q& Y/ j3 v0 o" i5 Y. N- <script language="javascript" type="text/javascript">
: W p+ B$ @. E8 ^ - setTimeout("window.location.href='b.html'", 2000);- d0 t( i, F$ d9 g: B( w, h
- //下面两个都可以用: O% e1 B; G/ ~- h1 t. |, K
- //setTimeout("javascript:location.href='b.html'", 2000);$ t5 W1 [" e: p' ]7 i3 j% u
- //setTimeout("window.location='b.html'", 2000); O3 ` Q$ j# b! |/ x7 m, J) r" i
- </script>
复制代码 例8:2 f5 D% p( J8 F( @% s* F a
- <span id="totalSecond">2</span>
; l* C5 d3 K! A0 M9 V. y - <script language="javascript" type="text/javascript">
/ K* ~% ^ i- `- @: w B6 o% n - var second = document.getElementByIdx_x('totalSecond').innerHTML;0 F, e3 W7 c, V. B$ Q
- if(isNaN(second)){
6 m. b: ^8 [) C - //……不是数字的处理方法
% A# B1 ^1 c( Z2 E - }else{
+ J Q" U% p- r4 E - setInterval(function(){3 k( N; t# G+ r4 ~2 b) y0 _
- document.getElementByIdx_x('totalSecond').innerHTML = --second;: e# a) O! }* W5 Z& n: ]- K
- if (second <= 0) {% F. U+ b: A6 G, g, @9 X9 ?& M, F+ J
- window.location = 'b.html';
9 H: D1 ^8 }. f0 U0 ~0 M) p - }3 \: H \' g3 _3 S$ j0 |9 d& N
- }, 1000);& T, K4 P& M8 F+ V7 d( c, x
- }
/ Y1 f( `6 S" B8 P - </script>
复制代码 ! S. f) l! W& K- _* s9 K; W9 `
5 z8 |* x) p. f9 \# s" [6 S5 J& p
+ n3 F* |+ x/ ~0 J& r9 {
| 欢迎光临 cncml手绘网 (http://www.cncml.com/) |
Powered by Discuz! X3.2 |