最近,因项目需要,需要实现setTimeOut传参数的功能,搜索了很多的资源。终于找到一个比较好的方法了,记录下来,与大家分享。

  无论是window.setTimeOut还是window.setInterval,在使用函数名作为调用句柄是都不能带参数。

  先看一段简单的javascript代码:

1 function show()
2 {
  alert("Hello World");
}
setTimeout(show,1000);

  代码结果是:1秒中之后输出Hello World,但如果改成:

 setTimeout(show(),1000);

  会立即输出结果,达不到延时的目的。但如果加上引号(双引号或单引号)就可以了,如:

 setTimeout("show()",1000);

  但如果加上参数又不可以了,如:

 setTimeout("show(name)",1000);

  可通过以下方法来解决以上问题:写一个函数,并返回一个不带参数的函数。代码如下:

 <script language="javascript">
function show(name)
{
alert("Hello World:" + name);
}
function _show(name)
{
return function()
{
show(name);
}
}
setTimeout(_show(name),1000);
</script>

  需求:1.setTimeOut传参数 2.动态设置onclick事件

  解决方法:

 function timeClick(obj)
{
// var obj=document.getElementById('');
obj.style.backgroundColor="gray";
obj.onclick=function(){ return false;};
setTimeout(function(){resetbgColor(obj);},3000);
} function resetbgColor(obj)
{
// var obj=document.getElementById('');
obj.style.backgroundColor="blue";
// $('#'+'').click(timeClick);
// debugger;
obj.onclick=function(){
timeClick(this);
};
}

setTimeOut传参数的更多相关文章

  1. setTimeOut传参数(转)

    无论是window.setTimeout还是window.setInterval,在使用函数名作为调用句柄时都不能带参数.带参数则立马执行,没有延时效果.可通过下面方式实现.  <script  ...

  2. setTimeout传参 和 运行机制

    1.setTimeout 传参数 setTimeout还允许添加更多的参数.它们将被传入推迟执行的函数(回调函数) 上面代码中,setTimeout共有4个参数.最后那两个参数,将在1000毫秒之后回 ...

  3. setTimeout传参

    unction test(s) { alert(s); } window.setTimeout(function(){test('str');},1000); 这样就可以了...为什么是这样呢.因为s ...

  4. js关于setTimeout传参

    setTimeout函数有两个参数,都是必须的,一个是要执行的函数,一个是延时的时间 第一个参数: 要执行的函数,一般来说是可以执行的,但是这里遇到一个问题,就是如果变量是个数组的话, 如果数组为nu ...

  5. setInterval(callbackfunc,time)中callbackfunc传参数问题

    var si=setInterval(callbackfunc,time)中callbackfunc传参数问题(循环执行) var st=setTimeout(callbackfunc,time);定 ...

  6. 传参数应该用哪种形式——值、引用、指针?

    类型:C++ & Qt4,创建时间:十二月 30, 2011, 7:43 p.m. 标题无"转载"即原创文章,版权所有.转载请注明来源:http://hgoldfish.c ...

  7. Mybatis传参数

    1使用@Param注解传参数 mapper接口:public void updateUser(@Param("user")User user)throws Exception; m ...

  8. 如何给main传参数

    main 函数的参数有连个argc argcv[]  argc 是参数个数 argcv是参数的数组指针,且argcv的第一个参数是默认程序路径加程序名 给main传参数,需要在命令行启动程序时设置 如 ...

  9. mvc中多参数URL会很长,首次加载不传参数让url很短,路由规则实现方法[bubuko.com]

    如要实现列表中地址全路径“bubuko-11-2.html”,在首次进入时,使用短路径“bubuko.html”,只有再次href后才显示全路径“bubuko-11-2.html”,下面使用路由规则来 ...

随机推荐

  1. innobackupex基于binlog日志的恢复 -- 使用mysqlbinlog恢复

    备份先做一次完整备份: innobackupex --defaults-file=/etc/my.cnf --user root --password chengce243 /data/mysqlba ...

  2. hdu-2680 Choose the best route---dijkstra+反向存图或者建立超级源点

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2680 题目大意: 给你一个有向图,一个起点集合,一个终点,求最短路 解题思路: 1.自己多加一个超级 ...

  3. python_66_生成器2

    import time def consumer(name): print('%s准备吃包子 '%name) while True: baozi=yield print('包子[%s]来了,被[%s] ...

  4. 【Python全栈-CSS】background背景

    background背景 一.背景图片 background-image: url("img/num.png"); background-position-x: -200px ; ...

  5. Luogu [P2814] 家谱

    题目链接 这个题不难,但是有点小小坑. 首先并查集肯定能看出来. 然后字符串的话,一开始我想用 hash 来处理,但想了想,离散化不好搞,人也太多了,一不小心就hash重了,还是算了. 然后就想到了S ...

  6. oc字典放入到数组里,根据字典里的属性排序(重点)

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...

  7. 十六、MySQL LIKE 子句

    MySQL LIKE 子句 我们知道在 MySQL 中使用 SQL SELECT 命令来读取数据, 同时我们可以在 SELECT 语句中使用 WHERE 子句来获取指定的记录. WHERE 子句中可以 ...

  8. IDEA整合Mybatis+Struts2+Spring (二)--整合框架

    二.搭建目录结构 我这里列出的是搭建完了之后所有的目录和文件,诸位先把目录文件建起来,然后我在给出文件内容 这里的目录建好之后还需要设置一下,让idea识别目录作用,选择File-Project St ...

  9. Aliyun ECS简单的安装nginx(1.8.0)

    1. yum install gcc-c++ 2. yum install -y pcre pcre-devel 3. yum install -y zlib zlib-devel 4. yum in ...

  10. composer 自动加载源码解析

    一直在用 composer,最近想看一下具体的原理是什么,就仔细阅读了一下源码,一下是个人理解.在看该文章前最好了解一下 PSR-4 自动加载规范 引入类自动加载文件 # 加载类自动加载文件 requ ...