定时器setTimeout()的传参方法

更具体的代码:http://www.cnblogs.com/3body/p/5416830.html

// 由于setTimeout()的延迟执行特性,所以在执行的函数中直接使用外部函数的变量是无法获取到的,因为当执行的时候变量已经销毁了。所以,这里就使用了一个闭包的方法来达到能调用外部函数的目的。
// 通常的setTimeout(function(){...},100)是这样写的,也就是第一个参数是个函数,里面是要执行的代码片段。
// 这里就使用了闭包的方法return function(){...},第一个参数则接收到了一个函数,并往闭包中传入参数,这样就能先将变量赋给闭包的形参,里面的函数调用的就是闭包的形参,外部函数的销毁便不会影响到函数的执行了
addUl=setTimeout(function(a,id,width){
    return function(){
        $.post(
        '<{:U("Index/type")}>',
        {'id':id},
        function(data){
            if (data) {
                var ul='<ul style="background:white;position:absolute;left:'+width+'px;top:-1px;z-index:100;border:1px solid #6386ae";>';
                var id;
                var href;
                $.each(data,function(n,v){
                    id=v['type_id'];
                    // 不能使用array()传参,并且还要加上Home
                    href='<{:U("Home/Pro/more/type/'+id+'")}>';
                    ul+='<li style="margin:0;padding:0;text-align:center;width:100px;height:40px;overflow:hidden;" title="'+v['type_name']+'"><a href="'+href+'" style="margin:0;width:auto;">'+v['type_name']+'</a></li>';
                });
                ul+='</ul>';
                a.after(ul);
            };
        }
        );
    }
}(a,id,width),200);



// 第二种传参方法:第二个参数之后的参数就是传的参数
setTimeout(function(num){
    alert(num);  //弹出123
},1000,123);

转载于:https://www.cnblogs.com/3body/p/5416834.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值