`
未雨绸缪
  • 浏览: 213474 次
  • 性别: Icon_minigender_1
  • 来自: 陕西
社区版块
存档分类
最新评论

为setInterval传参数

阅读更多

在使用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。


 

分享到:
评论
1 楼 aigofly 2014-06-29  
写的很棒,解决了一个我纠结几天的问题。

相关推荐

    JavaScript中setTimeout和setInterval函数的传参及调用

    主要介绍了JavaScript中setTimeout和setInterval函数的传参及调用,着两个函数可以把要执行的代码在设定的一个时间点插入js引擎维护的一个代码队列中,需要的朋友可以参考下

    JS中setInterval、setTimeout不能传递带参数的函数的解决方案

    在JS中无论是setTimeout还是setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数, 这就需要想方法解决。 一、采用字符串形式:——(缺陷)参数不能被周期性改变 setInterval(“foo(id...

    定时器(setTimeout/setInterval)调用带参函数失效解决方法

    setInterval(code,millisec[,”lang”]) setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式。 参数 描述 code 必需,要调用的函数或要执行的代码串。 millisec 必需,周期性执行或调用...

    javascript中setInterval的用法

    第一种是最常见的表达语法,其中fnname参数可以是一个匿名函数的引用或者是一个函数名,time是设定的调用faname的时间间隔,单位为毫秒,默认值为10毫秒,par1…….parn为可选参数,是传递给faname方法的参数。

    使用自定义setTimeout和setInterval使之可以传递参数和对象参数

    /****************************************************** // // 功能: 修改window.setTimeout,使之可以传递参数和对象参数 // 使用方法: window.setTimeout(回调函数,延迟时间,参数1,参数n) // ******************...

    setInterval和setTimeout停止的方法

    由 setInterval() 返回的 ID 值可用作 clearInterval() 方法的参数。 语法 setInterval(code,millisec[,”lang”]) 参数 描述 code 必需。要调用的函数或要执行的代码串。 millisec 必须。周期性执行或调用 code ...

    JavaScript中SetInterval与setTimeout的用法详解

    setTimeout 描述 setTimeout(code,millisec) setTimeout() 方法用于在指定的毫秒数后调用函数或计算...setInterval(code,millisec[,”lang”]) 参数 描述 code 必需,要调用的函数或要执行的代码串。 mi

    仅IE不支持setTimeout/setInterval函数的第三个以上参数

    即传了第三个参数,第三个参数将作为回调函数的参数obj传入。在非IE浏览器中都弹出了1。这样有个好处,即解决了回调函数的执行上下文,比如要调用某个对象的某个方法,即可以通过参数把该对象传进去。 代码如下: ...

    浅谈js的setInterval事件

    后面就两个参数code是你的js代码,millisec为时间间隔,以毫秒计 代码如下: <body>  <div id=”content” style=”position:relative; height:1000px; width:1000px; background-col

    js代码-setInterval() 参数问题

    js代码-setInterval() 参数问题

    Javascript中setTimeOut和setInterval的定时器用法

    Javascript的setTimeOut和setInterval函数应用非常广泛,它们都用来处理延时和定时任务,比如打开网页一段时间后弹出...两个函数的参数也相同,第一个参数是要执行的code或句柄,第二个是延迟的毫秒数。 setTimeOut用法

    JS SetInterval 代码实现页面轮询

    由 setInterval 返回的ID值可用作 clearInterval 方法的参数。 提示: 1000 毫秒= 1 秒。 flash用法(来自百度百科) setInterval 动作的作用是在播放动画的时,每隔一定时间就调用函数,方法或对象。可以使用本动作...

    js中的setInterval和setTimeout使用实例

    clearInterval() 函数的参数即 setInterval() 返回的 ID 值。 语法 setInterval(code,millisec[,”lang”])code 必需。要调用的函数或要执行的代码串。millisec 必须。周期性执行或调用 code 之间的时间间隔,以毫秒...

    javascript setinterval 的正确语法如何书写

    但我实在要强烈的表达我的不满,问题就在于大家网上抄来抄去的太多了,导致抄到后来出了不少错误,比如 代码如下: setInterval(QuoteList(‘参数’),3000); 甚至还有 代码如下: setInterval(QuoteList,3000,’参数...

    js超时调用setTimeout和间歇调用setInterval实例分析

    本文实例分析了js超时调用setTimeout和间歇调用setInterval的用法。分享给大家供大家参考。具体如下: 今天看了javascript高级程序设计(第三版)一书,发现说setTimeout比setInterval更好,觉得的确如此。平时都是...

    JavaScript中setInterval的用法总结

    setInterval动作的作用是在播放动画的时,每隔一定时间就调用函数,方法或对象。可以使用本动作更新来自数据库的变量或更新时间显示。 setInterval动作的语法格式如下:setInterval(function,interval[,arg1,arg2,...

    精解window.setTimeout()window.setInterval()使用方式与参数传递问题!

    这是我们常常会使用方法setInterval或setTimeout,但是由于这两个方法是由脚本宿主模拟出来的Timer线程,在通过其调用我们的方法是不能为其传递参数。 我们常用的使用场景是: 代码如下:window.setTimeout(...

Global site tag (gtag.js) - Google Analytics