admin 管理员组

文章数量: 1087709

javascript settimeout

投稿中心
  • 网页制作
  • 网络编程
  • 脚本专栏
  • 脚本下载
  • 数据库
  • CMS教程
  • 电子书籍
  • 平面设计
  • 媒体动画
  • 操作系统
  • 网站运营
  • 网络安全
  • 在线手册
  • 基础知识
  • javascript类库
  • 表单特效
  • 广告代码
  • 网页特效
  • 黑客性质
  • javascript技巧
  • DOM
  • node.js
  • js其它
您的位置: 首页 → 网络编程 → JavaScript → javascript技巧 → 正文内容 JS中setTimeout
  • 低价出售流量10000IP只需8元
  • 30余款阿里云产品免费6个月>>
  • 全国混拔ADSL云服务器租用/创梦网络
  • 买3送1香港云49元/美国49元/韩国云89元
  • 实力团队 带你做网赚项目!日赚千元
  • ◆◆◆海西数据全球服务器租用◆◆◆
  • 微子网络 湛江双线高防 抗15G 700元起
  • 中原地区核心数据中心,首月托管免费
  • 百兆 12核24线程 16G内存 2T 999/月
  • ◆◆◆◆◆高防免备案CDN◆◆◆◆◆
  • BGP四线 亿恩1U服务器托管3999元/年
  • 九九数据 — 工信部认可正规资质IDC接入商
  • 枫信科技-江苏双线10M保证-399/元
  • 港湾网络-徐州百独16核32G 999/月~
  • 免备vps20/百独799/双线350/45互联
  • 韩国香港美国站群服务器 巨牛网络
  • 鼎点网络百兆独享服务器仅需999元
  • [香港双高防]无视CC★DDOS/堪比广东!
  • 畅游网络 百独服务器 包跑满 998元
  • 服务器租用 199元起
  • ◆◆2M带宽虚拟主机 118/年◆◆
  • 群英云服务器送10M带宽30G防御,49元起
  • 服务器租用/托管-域名空间/认准腾佑科技
  • ▆▇██云服务器低至¥47/月 ▆▇██

JS中setTimeout()的用法详解

作者: 字体:[增加 减小] 类型:转载 时间:2013-04-14 我要评论

setTimeout( ) 是属于 window 的 method, 但我们都是略去 window 这顶层物件名称, 这是用来设定一个时间, 时间到了, 就会执行一个指定的 method
  1. setTimeout
    1. setTimeout 语法例子
    2. 用 setTimeout 来执行 function
    3. 不断重复执行的 setTimeout
    4. 设定条件使 setTimeout 停止
    5. 计分及计秒的 counter
  2. clearTimeout
  3. Set flag

1. SetTimeOut()

1.1 SetTimeOut()语法例子

1.2 用SetTimeOut()执行Function

1.3 SetTimeOut()语法例子

1.4 设定条件使SetTimeOut()停止

1.5 计分及秒的counter

2. ClearTimeout()

3. Set Flag

10.1 setTimeout( )

  setTimeout( ) 是属于 window 的 method, 但我们都是略去 window 这顶层物件名称, 这是用来设定一个时间, 时间到了, 就会执行一个指定的 method。请先看以下一个简单, 这是没有实际用途的例子, 只是用来示范 setTimeout( ) 的语法。

1. setTimeout( ) 语法例子

练习-69 等候三秒才执行的 alert( )

  在 第 3 章 说到 alert 对话盒, 一般是用按钮叫出来, 在这练习, 你会看到网页开启后 3 秒, 就会自动出现一个 alert 对话盒。

1. 请用浏览器开启示范磁碟中的timeout1.htm, 这档桉有以下内容:

<html> <body bgcolor=lightcyan text=red>
<h1> <font color=blue>
示范网页 </font> </h1> <p> </br>
<p>
请等三秒!

<script>
setTimeout("alert('
对不起, 要你久候')", 3000 )
</script>

</body> </html>

2. 留意网页开启后三秒, 就会出现一个 alert 对话盒。

  setTimeout( )是设定一个指定等候时间 (单位是千分之一秒, millisecond), 时间到了, 浏览器就会执行一个指定的 method 或 function, 有以下语法:

  今次例子是设定等 3 秒 (3000 milliseconds), 浏览器就会执行 alert( ) 这一个method。

2. 用 setTimeout( ) 来执行 function

  setTimeout( ) 通常是与 function 一起使用, 以下是一个较上个练习複杂的例子。

练习-70 状态列中自动消失的文字

  在练习-20, 你看过如何用按钮在状态列显示文字, 然后再用按钮消除文字, 在这练习, 你看到如何用按钮在状态列显示文字, 而这文字会在三秒后自动消失。

1. 请用浏览器开启示范磁碟中的timeout2.htm, 这档桉有以下内容:

<html> <body bgcolor=lightcyan text=red>
<h1> <font color=blue>
示范网页 </font> </h1> <p> </br>

<script>
function
clearWord( )
{ window.status="" }
</script>

<form>
<input type="button" value="
在状态列显示文字"
  onClick="window.status='
Hello' ,setTimeout('clearWord()', 3000) ">
</form>
</body> </html>

2. 请在按钮上按一下,你应见到状态列出现 Hello 这字, 留意过了三秒, 这字就会消失。

1. 这处先设定一个名为 clearWord( ) 的 function, 作以下定义:

window.status=""

  这是用来消除状态列的文字 (请看练习-20 的说明), 浏览器执行 clearWord( ) , 就会消除状态列的文字。

2. 今次按钮设定了启动以下两项工作, 用 , 分隔, 浏览器会顺序执行这两项工作:

onClick="window.status='Hello' , setTimeout('clearWord( )', 3000) "

3. 今次的 setTimeout( ) 有以下设定:

  这是设定等 3 秒 (3000 milliseconds) 浏览器就会执行 clearWord( ) 这一个function。

  在第 2 章, 你看过如何使到父视窗开启时自动开启一个子视窗, 若观看者不关闭这子视窗, 这子视窗就会一路开启。看过以上的练习, 请你设计一个会开启子视窗的网页, 而这子视窗在开启后两秒, 就会自动关闭。

3. 不断重複执行的 setTimeout( )

  setTimeout( ) 预设只是执行一次, 但我们可以使用一个循环方式, 使到一个setTimeout( ) 再启动自己一次, 就会使到第二个 setTimeout( ) 执行, 第二个又启动第三个, 这样循环下去, 这 setTimeout( ) 就会不断执行。

练习-71 自动每秒加 1 的 function

  在这练习, 你看到如何使用 setTimeout( ) 令文字框的数值每秒就加 1, 当然你也可以设定其他递增的速度, 例如每五秒就加 5, 或每五秒就加 1。

1. 请用浏览器开启示范磁碟中的 timeout3.htm, 这档桉有以下内容:

<html> <head>
<script>
x =
0
function
countSecond( )
{ x = x+1
  document.fm.
displayBox.value=x
  setTimeout("
countSecond()", 1000)
}
</script> </head>
<body bgcolor=lightcyan text=red> <p> </br>

<form name=
fm>
<input type="text" name="
displayBox"value="0" size=4 >
</form>

<script>
countSecond( )
</script>

</body> </html>

2. 网页开启后, 请你留意文字框中的数值转变。

3. 请你将这档桉複製去硬碟, 更改一些设定, 例如 x = x+5, 或将等候时间改为5000, 看有什麽反应

1. 这网页有两个 script, 第一个是设定 countSecond( ) 这个 function, 第二个在后的是在网页完全载入后, 就启动这 function。

2. 留意今次以下的设定:

function countSecond( )
{ 
x = x+1
  document.
fm.displayBox.value = x
  setTimeout("
countSecond()", 1000)
}

  当 countSecond( ) 启动后, 就会启动 setTimeout( ), 这个 method 在一秒后又启动 countSecond( ), countSecond( ) 启动后又启动 setTimeout( ) , 所以得出的结果是 countSecond( ) 每秒执行一次。

3. 在 JavaScript, 我们是使用这处说的方法使到一些事项不断执行, 其中一个用途是显示转动时间, 另一个用途是设定跑动文字, 随后的章节会有例子。

  用上述的方法设定时间, setTimeout( ) 虽然设定了是一秒, 但浏览器还有另外两项功能要执行, 所以一个循环的时间是稍多于一秒, 例如一分钟可能只有58 个循环。

4. 设定条件使 setTimeout( ) 停止

  setTimeout( ) 的迴圈开始后, 就会不断重複, 在上个练习, 你看到文字框的数字不断跳动, 但我们是有方法使到数字跳到某一个数值就停下来, 其中一个方法是用 if...else 设定一个条件, 若是 TRUE 就继续执行 setTimeout( ) , 若是 FALSE 就停止。

  例如要使到上个练习的 counter 跳到 20 就停下, 可将有关的 function 作以下的更改。

function countSecond( )
{ if (
x < 20 )
   { 
x = x + 1
     document.
displaySec.displayBox.value = x
     setTimeout("
countSecond( )", 1000)
  }
}

5. 计分及计秒的 counter

  在前面的练习, 相信你已学识如何使用 setTimeout( ), 现在请你看一个较複习的例子。

练习-72 计时的 counter

  在这练习, 你要设定两个文字框, 一个显示分钟, 另一个显示秒, 网页开启后, 就会在这两个文字框中自动计时。

1. 请用浏览器开启示范磁碟中的timeout4.htm, 这档桉有以下内容:

<html> <head>
<script>
x=0
y=-1

function countMin( )
{ y=y+1
  document.displayMin.displayBox.value=y
  setTimeout("countMin( )",60000)
}

function countSec( )
{ 
x = x + 1
  z =
x % 60
  document.
displaySec.displayBox.value=z
  setTimeout("
countSec()", 1000)
}
</script> </head>

<body bgcolor=lightcyantext=red> <p> </br>

<table> <tr valign=top> <td>
你在本网页的连线时间是:</td>

<td> <form name=
displayMin>
<input type="text" name="
displayBox"value="0" size=4 >
</form> </td>
<td> 分 </td>

<td> <form name=
displaySec></td>
<td> <input type="text" name="
displayBox"value="0" size=4 >
</form> </td>
<td>
秒。</td> </tr> </table>

<script>
countMin( )
countSec( )
</script>
</body> </html>

2. 请你留意两个文字框中的数字转变。

1. 这网页有两个 function, 一个用来计分钟, 一个用来计秒。在这处, 笔者只是示范setTimeout( ) 的操作, 因为计时器有其他更精简的写法。(留意: 这方式的计时并不准确。)

2. 留意计秒的 function:

function countSec( )
{ 
x = x + 1
  z =
x% 60
  document.
displaySec.displayBox.value=z
  setTimeout("
countSec()", 1000)

}

  这处的 % 符号是 modulus (馀数), 例如 z = x % 60 表示先进行 x / 60, 得出的馀数作为 z 这变数, 例如 82 秒, modulus 就是 22, 所以文字框会显示 22 而不是 82。

3. 若你要将单位数字在前加上 0, 例如 01, 02, 03 等, 可用以下方法:

function countSec( )
{ 
x = x + 1
  z =
x % 60
  if (
z < 10) { z = "0"+ z }
  document.
displaySec.displayBox.value=z
  setTimeout("
countSec()", 1000)
}

10.2 clearTimeout( )

  在前一节, 你看过如何使用 setTimeout( ) 来使到浏览器不断执行一个 function, 当一个 setTimeout( ) 开始了循环的工作, 我们要使它停下来, 可使用 clearTimeout( ) 这 method。

  clearTimout( ) 有以下语法: clearTimeout(timeoutID)

  要使用 clearTimeout( ), 我们设定 setTimeout( ) 时, 要给予这 setTimout( ) 一个名称, 这名称就是 timeoutID , 我们叫停时, 就是用这 timeoutID来叫停, 这是一个自订名称, 但很多程式员就以 timeoutID 为名。

  在下面的例子, 笔者设定两个 timeoutID, 分别命名为 meter1meter2, 如下:

timeoutID
 ↓
meter1 =setTimeout("count1()", 1000)
meter2 =setTimeout("count2()", 1000)

  使用这 meter1meter2 这些 timeoutID 名称, 在设定 clearTimeout( ) 时, 就可指定对哪一个 setTimeout( ) 有效, 不会扰及另一个 setTimeout( ) 的操作。

练习-73 可停止的 setTimeout( )

  这练习以练习-71为蓝本, 但作了两个改变: (1) 有两个 setTimeout( ), (2) 有两个按钮, 分别可停止这两个 setTimout( )

1. 请用浏览器开启示范磁碟中的clear.htm, 这档桉有以下内容:

<html> <head>
<script>
x = 0
y = 0

function count1( )
{ 
x = x+ 1
  document.
display1.box1.value= x
  meter1=setTimeout("
count1()", 1000)
}

function count2( )
{ 
y = y+ 1
  document.
display2.box2.value= y
  meter2=setTimeout("
count2()", 1000)
}
</script> </head>

<body bgcolor=lightcyantext=red> <p> </br>

<form name=
display1>
<input type="text" name="
box1"value="0" size=4 >
<input type=button value="
停止计时" onClick="clearTimeout(meter1)" >
<input type=button value="
继续计时" onClick="count1() " >
</form>
<p>
<form name=
display2>
<input type="text" name="
box2"value="0" size=4 >
<input type=button value="
停止计时" onClick="clearTimeout(meter2) " >
<input type=button value="
继续计时" onClick="count2( ) " >
</form>

<script>
count1( )
count2( )
</script>

</body> </html>

2. 留意网页中的两个文字框及内裡变动的数字, 每个文字框旁有两个按钮, 请你试试两个按钮的反应

3. 请你连续按多次 [继续计时]的按钮, 留意数值的跳动加快了, 原因是每按一次就启动 function 一次, 每个 function 都令数值跳动, 例如启动同一的 function 四次, 就会一秒跳四次。(请看下一节)

10.3 Set flag

  前个练习说到我们用一个按钮来启动一个 function, 每按一下就会启动这 function 一次, 请看以下例子。

练习-74 效果重複的 setTimeout( )

  这练习实际是将 练习-73 简化, 只有一个计时器, 笔者想示范的是每按 [继续计时] 一次, 就会启动 count( ) 这 function 一次。

1. 请用浏览器开启示范磁碟中的flag1.htm, 这档桉有以下内容:

<html> <head>
<script>
x=0
function
count( )
{ 
x = x + 1
  document.
display.box.value= x
  timeoutID
=setTimeout("
count()", 1000)
}
</script> </head> <body bgcolor=lightcyantext=red> <p> </br>
<form name=
display>
<input type="text" name="
box"value="0" size=4 >
<input type=button value="
停止计时" onClick="clearTimeout(timeoutID) " >
<input type=button value="
继续计时" onClick="count( ) " >
</form> <p>

<script>
count( )
</script>
</body> </html>

2. 网页开启后, 你应见到文字框中的数字跳动, 请你按四次 [继续计时], 留意这会加快数字跳动, 原因是有关的 function 被开启了多个, 每个都会使数字转变。

3. 按了四次 [继续计时] 的按钮后, 请你按 [停止计时] 的按钮, 你会发现要按五次才能停止数字跳动。

  在编写程式时, 我们常要提防使用者作出一些特别动作, 例如使用者按两次 [继续计时] 按钮, 这计时器就失准了。我们是否有办法使到一个按钮被按一次就失效呢? 这就不会产生重複效果。

  笔者藉这处的例子 (随后还有多个例子), 解说程式中一个 set flag (设定旗标) 的概念, flag 是一个记认, 一般来说, 这可以是 0 或是 1 (也可用 on 或 off, 或任何两个自选的名称或数字), 但也可以是 2、3、4 或更大的数字, 在这例子有以下设定:

1. 程式开启时 flag=0。

2. 当 counter( ) 执行时会顺便将 flag 变为 1。

3. 在 [继续计时] 这按钮的反应中, 会先检查 flag 是 0 或是 1, 若是 0 就会产生作用, 若是 1 就没有反应。

4. 使用这 flag 的方式, count( ) 这 function 开启后, [继续计时] 这按钮就没有作用。

  这处的 flag 是一个变数, 可任意取名, 我们用 flag来称呼这变数的原因, 是因为这变数好处一支旗, 将旗竖起 (flag is on), 就会产生一个作用, 将旗放下 (flag is off), 就产生另一个作用。

练习-75 只可开启一次的 function

  这练习是将上个练习加多一个 flag, 使到每次只能有一个 count( ) 这 function 在进行。

1. 请用浏览器开启示范磁碟中的flag2.htm, 这档桉有以下内容:

<html> <head>
<script>
x = 0
flag = 0
function
count( )
{ 
x = x+ 1
  document.
display.box.value= x
  timeoutID=setTimeout("
count()", 1000)
  flag =
1
}

function restart( )
{ if (
flag==0)
   { 
count( ) }
}
</script> </head>

<body bgcolor=lightcyantext=red> <p> </br>
<form name=
display>
<input type="text" name="
box"value="0" size=4 >
<input type=button value="
停止计时"
  onClick="clearTimeout(
timeoutID);flag=0" >
<input type=button value="
继续计时" onClick="restart() " >
</form> <p>

<script>
count( )
</script>

<form>
<input type=button value="
Show flag"
onClick="alert('
The flag now is '+ flag)" >
</form>
</body> </html>

2. 在网页中, 你应见到三个按钮及文字框中的数字跳动。

3. 请你按 [Show flag]这按钮, 应见到一个话对盒显示 flag 是 1。

4. 请你按 [停止计时]这按钮, 数字停止跳动, 请你按 [Show flag] 这按钮, 应见到话对盒显示 flag 是 0。

5. 请你按多次 [继续计时]这按钮, 你应见到数字不会加快, 请你按 [Show flag]这按钮, 应见到话对盒显示 flag 变回 1。

1. 这网页第 4 行有这一句: flag=0 , 这是设定 flag 这变数及将初始值定为 0, 你也可将初始值定为 1, 随后有关的 0 和 1 对调。

2. count( ) 这 function 最后一句是 flag=1 , 所以启动 count( ) 后, flag 就会变为 1。

3. [继续计时] 的按钮是用来启动 restart( ), 这 function 有以下设定:

function restart( )
{ if (
flag==0)
   { 
count( ) }
}

  这处的 if statement 检查 flag是否等于 0, 若是 0 就启动 count(), 若是 1 (即不是 0) 就没有反应,使用这方法, 若 count( )已在执行中, [继续计时] 这按钮不会有作用。

  这处的 flag=1设定, 实际设为 1 或 2 或 3 等数值都是一样的,只要不是 0 就可以了, 所以这两个相对的旗标,看似是 "0" 和 "1", 实际是"0" 和 "non-zero" (非-0)。

4. [停止计时] 的按钮有以下设定:

onClick="clearTimeout(timeoutID);flag=0"

  这是停止 setTimeout( ) 的操作时,同时将 flag 转回 0, 这使到restart( ) 这function 可以重新启动 count()

如对本文有疑问,请提交到交流社区,广大热心网友会为你解答!! 点击进入社区

您可能感兴趣的文章:
  • JavaScript中setTimeout的那些事儿
  • 快速掌握Node.js中setTimeout和setInterval的使用方法
  • JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
  • JavaScript中SetInterval与setTimeout的用法详解
  • javascript中SetInterval与setTimeout的定时器用法
  • JavaScript window.setTimeout() 的详细用法
  • JS延迟加载(setTimeout) JS最后加载
  • Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
  • js函数setTimeout延迟执行的简单介绍
  • js中setTimeout的妙用--防止循环超时
Tags: setTimeout

相关文章

  • 2015-12-12Bootstrap轮播加上css3动画,炫酷到底!
  • 2016-08-08JavaScript面向对象编写购物车功能
  • 2016-04-04html5+javascript实现简单上传的注意细节
  • 2011-01-01原生Js与jquery的多组处理, 仅展开一个区块的折叠效果
  • 2016-12-12js实现小窗口拖拽效果
  • 2016-11-11JS实用的带停顿的逐行文本循环滚动效果实例
  • 2015-02-02JS函数this的用法实例分析
  • 2016-12-12JS限制条件补全问题实例分析
  • 2013-12-12利用JS来控制键盘的上下左右键(示例代码)
  • 2016-10-10BootStrap tooltip提示框使用小结

最新评论

评论 (16人参与,1条评论) 搜狐“我来说两句”用户公约
  • [北京市网友]

51是我见过广告最多的网站

8 1 回复 分享 Powered by 畅言
大家感兴趣的内容
  • 1js刷新页面方法大全
  • 2JS中setTimeout()的用法详解
  • 3js页面跳转常用的几种方式
  • 4javascript深入理解js闭包
  • 5JS打开新窗口的2种方式
  • 6JS截取字符串常用方法详细整理
  • 7js关闭当前页面(窗口)的几种方式
  • 8JS设置cookie、读取cookie、删除
  • 9js 将json字符串转换为json对象的
  • 10JS弹出窗口代码大全(详细整理)
最近更新的内容
    • JavaScript中的单引号和双引号报错的解决
    • Package.js 现代化的JavaScript项目make
    • 深入理解JS中的变量及作用域、undefined与
    • Javascript中的apply()方法浅析
    • Javascript编程之继承实例汇总
    • JavaScript实现数组降维详解
    • js控制table合并具体实现
    • 图片格式的JavaScript和CSS速查手册
    • JavaScript 学习 - 提高篇
    • JavaScript实现简单的拖动效果

众生网络

品牌服务器租用

集思网络

VPS主机

枫信科技

IDC服务商
常用在线小工具
  • 在线生成二维码工具(加强版)
  • RGB颜色查询对照表_配色工具
  • 在线XML/JSON互相转换工具
  • 正则表达式在线生成工具
  • JavaScript正则在线测试工具
  • JavaScript代码格式化工具
  • JavaScript代码在线加密工具
  • JavaScript压缩/格式化/加密工具
  • php代码在线格式化美化工具
  • 在线JSON代码检验/检验/美化/格式化

关于我们 - 广告合作 - 联系我们 - 免责声明 - 网站地图 - 投诉建议 - 在线投稿

©CopyRight 2006-2017 JB51.Net Inc All Rights Reserved. 脚本之家 版权所有

微信扫一扫

站长统计 站长统计

本文标签: javascript settimeout