cncml手绘网
标题: js定时器(执行一次、重复执行) [打印本页]
作者: admin 时间: 2018-7-31 10:57
标题: js定时器(执行一次、重复执行)
1,只执行一次的定时器
) S. D6 R; J* k' H, B4 X9 C- <script> , R" C0 K. E7 p9 ^/ Z
- //定时器 异步运行
0 @3 | O' _4 v6 R) a3 b- r - function hello(){
6 A% w; l$ d+ R8 ~, ?0 C - alert("hello");
7 n a- j6 U. \+ X, q7 S# n - } # {. _# Z+ r# f! r5 w4 J' K
- //使用方法名字执行方法
* l% V" o U- o) E& \ - var t1 = window.setTimeout(hello,1000); - {+ @% Z* v6 r- p. C
- var t2 = window.setTimeout("hello()",3000);//使用字符串执行方法
' {7 @' `5 }8 j - window.clearTimeout(t1);//去掉定时器 7 j5 O6 B3 S$ Z1 n s$ G
- </script>
复制代码 2,重复执行的定时器 + z- W: K# Z: c! h! {
- <script> " }, M3 E, p o/ b( ~' j/ [/ k9 o
- function hello(){ 4 s6 N4 F* f8 s
- alert("hello"); : k: d( G8 T$ c$ Z+ n
- }
/ o9 M. W: C# I% `/ O- E - //重复执行某个方法
1 E. L) | O; P! O: t7 J3 | - var t1 = window.setInterval(hello,1000); ( M/ [ S7 r0 J8 K7 B4 F
- var t2 = window.setInterval("hello()",3000);
3 @! Q$ W+ i3 o0 m - //去掉定时器的方法
3 A1 j; D: K( a2 F1 q - window.clearInterval(t1);
- ` G! D8 x7 _* S: K5 h# O - </script>
复制代码 备注:
% @8 t1 G* [0 j+ T( W3 T( @0 y+ v k* S' a* R& U& N
如果在一个页面中有两个方法,都是在页面加载完成之后执行的,实际却未能按先后顺序执行,可以参照如下方法解决:
g% j9 }# g3 Y: C {) c. }可以在onload方法中添加一个定时器,设置一个定时器,“延迟”一段时间之后再运行,即可认为区分页面加载运行方法的先后顺序。
+ Y W7 ?: O4 {* X2 M6 |7 A) X; [+ l/ }
在javascritp中,有两个关于定时器的专用函数,分别为:
1.倒计定时器:timename=setTimeout("function();",delaytime);1 j; B9 k9 t5 Z0 n6 `
2.循环定时器:timename=setInterval("function();",delaytime);
第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“;”隔开即可。比如要弹出两个警告窗口,便可将“function();”换成4 A7 Y! B: d/ `
“alert('第一个警告窗口!');alert('第二个警告窗口!');”;而第二个参数“delaytime”则是间隔的时间,以毫秒为单位,即填写“5000”,就表示5秒钟。+ a' | z8 {" ~& v. s& O6 D! q
倒计时定时器是在指定时间到达后触发事件,而循环定时器就是在间隔时间到来时反复触发事件,两者的区别在于:前者只是作用一次,而后者则不停地作用。
4 X" Y0 N1 d) _比如你打开一个页面后,想间隔几秒自动跳转到另一个页面,则你就需要采用倒计定时器“setTimeout("function();",delaytime)” ,而如果想将某一句话设置成一个一个字的出现,
; \, t% V( m" @0 z. ~% c则需要用到循环定时器“setInterval("function();",delaytime)” 。
获取表单的焦点,则用到document.activeElement.id。利用if来判断document.activeElement.id和表单的ID是否相同。
+ k1 L8 _2 @$ f& d. i比如:if ("mid" == document.activeElement.id) {alert();},"mid"便是表单对应的ID。
定时器:
用以指定在一段特定的时间后执行某段程序。
JS中定时执行,setTimeout和setInterval的区别,以及l解除方法
setTimeout(Expression,DelayTime),在DelayTime过后,将执行一次Expression,setTimeout 运用在延迟一段时间,再进行某项操作。
, k, n; R/ i0 m/ n8 @9 a5 ]setTimeout("function",time) 设置一个超时对象
setInterval(expression,delayTime),每个DelayTime,都将执行Expression.常常可用于刷新表达式.
" J z" I5 `2 M/ A% B0 n' NsetInterval("function",time) 设置一个超时对象
SetInterval为自动重复,setTimeout不会重复。
clearTimeout(对象) 清除已设置的setTimeout对象
/ N3 A5 f8 w8 S: M4 ]" M% eclearInterval(对象) 清除已设置的setInterval对象
略举两例。
; j" H1 N* g& J: u$ v例1.表单触发或加载时,逐字输出字符串
) k' n) l0 X7 s. R7 Z. B, f) k
- <html>' O$ D) F! I1 q5 O$ Y
- <head>) F$ n- m( Q& K( r$ C+ [
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
( A% I. ?; v% q# G, @ - <title>无标题文档</title>% I+ b* O6 F& y6 D0 [8 A$ b: q4 }8 ]
- <script language="JavaScript" type="text/javascript">
$ R" C9 D4 \" r' i* s2 J9 Z, @5 a - var str = "这个是测试用的范例文字";1 o' ]4 u6 i9 h4 k: P
- var seq = 0;
4 L+ |% k% v0 y4 N2 i3 | - var second=1000; //间隔时间1秒钟1 ` |4 e$ ^: y. |& T5 K
- function scroll() {
6 \$ o! `( X" ^4 a( U+ i; c - msg = str.substring(0, seq+1);
8 U" U3 Q3 _, e, D) t - document.getElementByIdx_x_x('word').innerHTML = msg;
! V1 d) N3 s3 b* G1 u - seq++;
+ J: `0 v1 \) `' Q/ d - if (seq >= str.length) seq = 0;
, I$ L$ {" p6 Y - }
[1 i0 F5 p5 `7 j: Z1 s/ ^/ a, v - </script>
5 f7 C% V7 }; ~5 n s5 k - </head>" K! c4 O3 ~; B, s. b6 H
- <body onload="setInterval('scroll()',second)">
# f, M2 U& O f. g. G: K! T# z$ O - <div id="word"></div><br/><br/>
+ |- |0 t `8 k: a - </body>
) A- S/ O4 r0 s' R/ | - </html>
复制代码 例2.当焦点在输入框的时候,定时检查输入框信息,焦点不在时不执行检查动作。
7 S- L+ t# ]5 {8 y/ h B1 a0 h1 h- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">7 m; L1 [5 y- Y; P: i4 ~# m
- <html xmlns="http://www.w3.org/1999/xhtml">0 P4 z$ _' s2 |* N4 {
- <head>5 `/ q; J5 V' ^ ^
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /># |7 O( }" l( @4 P" [
- <title>无标题文档</title>5 R0 {0 F. l- _7 S* X
- <script language="JavaScript" type="text/javascript">( e2 \" {! N# a- q
- var second=5000; //间隔时间5秒钟/ T; t& E; [- k; I [9 P
- var c=0;8 S$ N" \& s D6 k2 _: C8 |+ w
- function scroll() {+ x4 h; t, E1 E
- c++;
3 ?5 G" Z2 p* o( f! [3 j# N) y - if ("b" == document.activeElement.id) {& T0 p3 R; H( V5 o8 G; V- X
- var str="定时检查第<b> "+c+" </b>次<br/>";
- v4 s" k) r+ E l7 }; z2 `6 ]) ` - if(document.getElementByIdx_x_x('b').value!=""){
9 i$ ~0 S4 L& M8 X: ~ - str+="输入框当前内容为当前内容为<br/><b> "+document.getElementByIdx_x_x('b').value+"</b>";. [: _6 I. X3 D
- }
, b1 B/ ?# Q$ a2 T1 X% b1 D+ W - document.getElementByIdx_x_x('word').innerHTML = str;- C% Z9 d3 t$ d
- }9 p4 B% R9 c# x# G( G: h
- }
8 x7 K) ^0 q8 Y) D2 M- c7 n - </script>
$ M8 h2 s7 o" m J3 }4 G0 ~ - </head>
0 k0 r$ ]) t) t! j d' }3 S - <body>& ^) b* u! c; F+ j7 o4 s0 {
- <textarea id="b" name="b" style="height:100px; width:300px;" onfocus="setInterval('scroll()',second)"></textarea><br/><br/>
, i) _9 m# F! P - <div id="word"></div><br/><br/>8 T& X& C6 S: h7 F& t; C
- </body>* n. C& D: @; B- P2 o( z
- </html>
复制代码 例3.下面这个是最简单的例子,定时器时间到达后弹出警告窗口。
" e8 H8 R T! h6 j: t- <html xmlns="http://www.w3.org/1999/xhtml">
6 X! t7 X0 g. _ g& | - <head>% }! E4 f; m. O
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />! A/ e+ b6 _0 E j1 f- y2 _
- <script language="javascript">; R+ ^9 A8 }; Q+ c
- function count() {
) b/ |/ X6 z! q) L - document.getElementByIdx_x_x('m').innerHTML="计时已经开始!";
6 {. `3 u, |; g3 l6 U - setTimeout("alert('十秒钟到!')",10000)
# o" t% r7 p- C7 V - }
- l) J' H1 P, w' w" b: { - </script>( R! e, V/ ~! x5 ^
- <body>
6 \1 {$ M+ N8 m. N: P" ? - <div id="m"></div>$ i! a$ x; L6 d* d* _# q
- <input TYPE="button" value=" 计时开始" onclick="count()">
A- {# V: b( c4 b1 M; r% o$ t - </body>; F- M8 D. d+ ^
- </html>
复制代码 例4:倒计时定时跳转& M- V: ^+ v6 K
- <html>
; ?" X$ Z1 y. R0 } - <head>/ }* ]" M& ^) I6 n- C
- <base href="<%=basePath%>">
4 C% @( L9 a2 N - <title>My JSP 'ds04.jsp' starting page</title>
: q5 b' e' U# J - <span id="tiao">3</span># l `$ N, B p2 X
- <a href="javascript:countDown"> </a>秒后自动跳转……4 K! \0 b/ S6 f6 w9 x5 u
- <meta http-equiv=refresh content=3;url= '/ds02.jsp'/>
( N8 h+ u) h' b$ P I9 F - <!--脚本开始-->! O: E/ i4 q+ x; X5 w' V
- <script language="javascript" type="">) b; a* o$ b! d
- function countDown(secs){ Y1 S1 o9 }6 O7 E/ G
- tiao.innerText=secs;
. O4 C% P% V& o+ \ - if(--secs>0). h0 u$ `% s( L9 o) @. \* D* d
- setTimeout("countDown("+secs+")",1000);
- M# C5 |! `0 l$ D* J1 ]. k8 S$ @ - }
8 K4 {4 D2 M2 H; [' ^8 j - countDown(3);
% p4 R8 o6 ^, A. V: b! Z: O - </script>& B5 k9 @" `9 ?7 K
- <!--脚本结束-->( g- v* z( r2 l9 E' I
- </head>
复制代码 例6:
. }5 L' P% q& P4 z! _3 W- <head>
# n8 c# r5 b0 n! E n; R - <meta http-equiv="refresh" content="2;url='b.html'">
( {! n6 d- l( o, i) [0 H - </head>
复制代码 例7:& [+ d) b$ i, `; Q# E) k9 j, c
- <script language="javascript" type="text/javascript">+ @' _) P9 T. C C0 I( }/ W& C
- setTimeout("window.location.href='b.html'", 2000);) P! m0 `* l2 R: s0 { r
- //下面两个都可以用
( h$ k- k) v* w - //setTimeout("javascript:location.href='b.html'", 2000);
7 e( g8 ?, l6 n" K7 t& V - //setTimeout("window.location='b.html'", 2000);/ N% `# H+ f/ Q, L# t
- </script>
复制代码 例8:
9 Z- a" E3 G5 a/ f$ \$ w! |4 V- <span id="totalSecond">2</span>
) X" W# E4 s/ h/ f% |7 b - <script language="javascript" type="text/javascript">
5 r7 F5 M+ a. |4 H/ Z& y - var second = document.getElementByIdx_x('totalSecond').innerHTML;
. \6 H0 [$ c) g S% q - if(isNaN(second)){
7 j) S) H. ^) u7 G2 p$ f - //……不是数字的处理方法
; @( ^. ]1 O0 A9 i( I1 j - }else{
, h' T& X- X. X - setInterval(function(){" W* K. C3 o: T+ e; H g) X
- document.getElementByIdx_x('totalSecond').innerHTML = --second;8 p7 s' M9 x' ?- ]5 l) [' e; E
- if (second <= 0) {" l( C. k& _% G% X* _$ Q
- window.location = 'b.html';
6 g5 L _; l$ Q# ` - }' l6 o% B8 I. n+ P2 ~
- }, 1000);
1 x% V/ X- O! K& C7 \2 v) B$ x2 D - } : A: z, R% C. n6 n& Y9 m4 A+ X
- </script>
复制代码
8 P6 E; t! k5 p
/ O) K; l- j+ N8 [/ x5 O o' u* F- A, \) C
欢迎光临 cncml手绘网 (http://www.cncml.com/) |
Powered by Discuz! X3.2 |