[setTimeout]
setTimeout(表达式,延时时间)
在执行时,是在载入后延迟指定时间后,去执行一次表达式,记住,次数是一次
用setTimeout实现的自动变化显示随机数的效果:
<html>
<head>
<script>
window.onload=sett;
function sett()
{
document.body.innerHTML=Math.random();
setTimeout("sett()",500);
}
</script>
</head>
<body>
</body>
</html>
[setInterval]
setInterval(表达式,交互时间)
则不一样,它从载入后,每隔指定的时间就执行一次表达式
用setInterval实现的自动变化显示随机数的效果:
<html>
<head>
<script>
function sett()
{
document.body.innerHTML=Math.random();
}
setInterval("sett();", 500);
</script>
</script>
</head>
<body>
</body>
</html>
在使用JScript的时候,我们有时需要间隔的执行一个方法,比如用来产生网页UI动画特效啥的。这是我们常常会使用方法setInterval或 setTimeout,但是由于这两个方法是由脚本宿主模拟出来的Timer线程,在通过其调用我们的方法是不能为其传递参数。
我们常用的使用场景是:
window.setTimeout("delayRun()", n);
window.setInterval("intervalRun()", n);
window.setTimeout(delayRun, n);
window.setInterval(intervalRun, n);
显然强行代参数的调用: window.setTimeout("delayRun(param)", n);
window.setInterval("intervalRun(param)", n);
window.setTimeout(delayRun(param), n);
window.setInterval(intervalRun(param), n);
都是错误的,因为string literals形式的方法调用,param必须是全局变量(即window对象上的变量)才行;而 function pointer形式的调用,完全错误了,这是把函数的返回值当成了setTimeout/setInterval函数的参数了,完全不是我们所望的事情。
解决这个问题的办法可以使用匿名函数包装的方式,在以下scenario中我们这么做:
function foo()
{
var param = 100;
window.setInterval(function()
{
intervalRun(param);
}, 888);
}
function interalRun(times)
{
// todo: depend on times parameter
}
这样一来,就可以不再依赖于全局变量向delayRun/intervalRun函数中传递参数,毕竟当页面中的全局变量多了以后,会给脚本的开发、调试和管理等带来极大的puzzle。
分享到:
相关推荐
我们常用的使用场景是: 代码如下:window.setTimeout(“delayRun()”, n); window.setInterval(“intervalRun()”, n); window.setTimeout(delayRun, n); window.setInterval(intervalRun, n);
本文将详细讲解window.setTimeout()和window.setInterval()的使用方式,并着重分析在不同场景下的参数传递问题。 首先,我们来看setTimeout和setInterval的基本用法。setTimeout方法用于将某个函数推迟执行一定的...
实战OpenGL三维可视化系统开发与源码精解+....pdf
2001年考研英语真题答案及精解..pdf
JSP软件工程案例精解.!!!!ㄐ!!!!!!ㄐ!
技术指标精解大全.doc
VC—关键技术精解原码.zip
《设计模式精解》.pdf
3. Qt核心模块:学习Qt的信号与槽机制,这是Qt事件处理的核心方式;掌握Qt的容器类,如QList、QMap等;熟悉事件处理系统;以及了解Qt的IO类库。 4. GUI开发:详细学习Qt Widgets模块的使用,如如何创建窗口、对话框...
股票技术指标精解大全.doc
文件标题是“《JavaScript编程精解》.pdf”,描述中提到了“JavaScript 编程精解 中文第一版”,而标签同样为“JavaScript 编程精解”。部分内容重复提及了访问“稀酷客”网站的链接,这可能是出版商提供的额外资源...
[ASP动态网站:68个典型模块精解].何国民等.扫描版.pdf
《Visual C++编程精选集锦 关键技术精解分册》是一本专注于C++编程语言在Visual Studio环境下的实践指南。Visual C++是Microsoft开发的一个强大的集成开发环境,它不仅支持标准C++,还提供了对Microsoft特有的MFC...
经典书籍 《C++builder6编程实例精解》.pdf
Delphi高级辅助工具精解.pdf!!!!!!!!!!!!
股票21个技术指标精解大全.doc
Handler、Looper和Message:用于线程间的通信,解决Android UI线程与工作线程的数据交互问题。\n\n四、数据存储\n1. SharedPreferences:轻量级的键值对存储,适用于保存应用设置等简单数据。\n2. SQLite数据库:...
二次函数经典难题(含精解).doc