您现在的位置: 爱51代码网 >> 范文 >> 文章正文
JS中setInterval、setTimeout不能传递带参数的函数怎么办

JS中setInterval、setTimeout不能传递带参数的函数怎么办

在JS中无论是setTimeout还是setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要带参数,

这就需要想方法解决。

一、采用字符串形式:——(缺陷)参数不能被周期性改变

setInterval("foo(id)",1000);


二、匿名函数包装 (推荐)

window.setInterval(function()

    {单片机温度自动控制系统设计

foo (id);

    }, 1000);

   这样就可以周期性执行foo(id)这个函数,而且把变量id传递进去;


三、定义返回无参函数的函数

function foo(id)

{

   alert(id);

}

function _foo(id)

{

return function()

{

foo(id);

}

}

window.setInterval(_foo(id),1000);

这里定义了一个函数_foo,用于接收一个参数,并返回一个不带参数的函数,在这个函数内部使用了外部函数的参数,从而对其调用,不需要使用参数。

在 window. setInterval函数中,使用_foo(id)来返回一个不带参数的函数句柄,从而实现了参数传递的功能。


四、修改setInterval

function foo(id)

{

alert(id);

}

var _sto = setInterval; 

window.setInterval = function(callback,timeout,param)

var args = Array.prototype.slice.call(arguments,2); 

var _cb = function()

callback.apply(null,args); 

}  

_sto(_cb,timeout); 

}

window.setInterval(hello,3000,userName);

以上的所有方法也适合setTimeout。

  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    E-business suite system servic
    ZOJ 3700 Ever Dream 文章中单词
    TortoiseGit和msysGit安装及使用
    asp中有一段javascipt的网页鼠标
    sharepoint 2010 获取用户信息Us
    设计包含max函数的队列
    随机从数组中取出指定的不重复的
    mysql主从同步延迟方案解决的学习
    青岛科学六年级下册教材分析
    生日旅行总结
    sharepoint 2010 获取用户信息Us
    mysql主从同步延迟方案解决的学习
    生日旅行总结
    中小板生日快乐随感
    送生日快乐桑葚乳酪小蛋糕
    写给女儿的生日快乐
    总分公司财务核算
    恢复使用繁体字可行性研究报告
    青少年吸烟心理探析
    保险受益人制度相关问题的探讨
    javascript 中强制执行 toSt
    SQL Server UNIQUE失效
    SQLServer2005中的企业管理器
    SQL Sever 如何修改主键数据
    sqlserver如何根据给出的时间
    解决SecureCRT连接linux超时
    dos编程:查询百度蜘蛛IP的命
    CSS下img图片多余空白或者是
    为什么说任何基于比较的算法
    E-business suite system se
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |