setTimeout,setInterval回调传参

使用方式一:

标准浏览器与IE10都支持额外传参数,从第三个参数起,作为回调的参数传入。

    var id = window.setTimeout(callback,10,1,2,4);
    function callback(i,j,k){
        alert(i+j+k);
        clearTimeout(id);
    }

 //返回结果:7

ie6-ie9可以用以下代码模拟:(来自司徒正美的框架设计)

 if(window.VBArray && !(document.documentMode>9)){
        (function(overrideFun){
            window.setTimeout = overrideFun(window.setTimeout);
            window.setInterval = overrideFun(window.setInterval)
        })(function(originalFun){
            return function(code,delay){
                var args = [].slice.call(arguments,2);
                return originalFun(function(){
                    if(typeof code=="string"){
                        eval(code);
                    }else{
                        code.apply(this,args);
                    }
                },delay);
            }
        })
    }

使用方式二:

    var m = 5;
    var id = window.setTimeout("callback(2,"+m+",3)",10);
    function callback(i,j,k){
        alert(i+j+k);
        clearTimeout(id);
    }
    
    // 返回结果:10

setTimeout,setInterval回调传参

时间: 2024-10-08 10:42:08

setTimeout,setInterval回调传参的相关文章

setInterval 函数传参(方法一)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

JS XMLHttpRequest.upload.addEventListener 传参,回调

JS 回调函数,传参的办法. function uploadFile(t) { var fd = new FormData(); fd.append("_netLogo", document.getElementById('_netLogo').files[0]); var xhr = new XMLHttpRequest(); // 原来 xhr.upload.addEventListener("progress", uploadProgress, false);

js SetTimeout传参问题

今天写代码遇到这样一个问题,先上代码 1 <!--JS方法--> 2 function textout(obj){ 3 if(opac==60){opac=0;return;}; 4 opac+=10; 5 if(document.all){ 6 obj.style.filter="alpha(opacity="+opac+")"; 7 } 8 else {obj.style.opacity=(opac/100);} 9 setTimeout('text

cocos2dx 菜单按钮回调方法传参 tag传参

.h文件 void menuCallBack(CCObject* pSender); .cpp CCMenuItemSprite* item = CCMenuItemSprite::create( menuCB1, menuCB2, this, menu_selector(helloworld::menuCallBack)); item->setTag(m); 回调方法 void helloworld::menuCallBack(CCObject* pSender) { CCNode* node

setInterval多组定时器函数封装传参

昨天的例子是针对只有单个函数运行的结果,但是实际中可能会有多组函数这样同时进行,那么这个时候就要对函数进行封装传参,来实现效果了.就还拿昨天的例子来说吧,昨天写的例子实现的效果是点击按钮,让div向前移动,那么今天就扩展一下,点击按钮让div向后移动,想要实现这个效果,就必须要传参了,来看代码: css代码 <style> #box{width:50px;height:50px;background:#ff6b0e;position: absolute;top:50px;left:50px;}

发送post请求,回调时通过url传参

发送post请求,通过回调获取相应参数:在发送的url中添加参数,通过回调,获取其相应的参数值: eg: 1.快递100发送post请求,进行订阅: public class ExpressRegisterServiceImpl { // 回调接口的地址 private static final String CALLBACKURL = "http://127.0.0.1/api/v2/expresscallback/kuaidi100/expressNotify"; public b

javascript线程解释(setTimeout,setInterval你不知道的事)

原文:http://www.iamued.com/qianduan/1645.html 今天看到这篇文章,学到了不少东西 特此发出来 和大家分享 JavaScript的setTimeout与setInterval是两个很容易欺骗别人感情的方法,因为我们开始常常以为调用了就会按既定的方式执行, 我想不少人都深有同感, 例如 setTimeout( function(){ alert('你好!'); } , 0); setInterval( callbackFunction , 100); 认为se

MySQL 存储过程传参之in, out, inout 参数用法

存储过程传参:存储过程的括号里,可以声明参数. 语法是 create procedure p([in/out/inout] 参数名  参数类型 ..) in :给参数传入值,定义的参数就得到了值 out:模式定义的参数只能在过程体内部赋值,表示该参数可以将某个值传递回调用他的过程(在存储过程内部,该参数初始值为 null,无论调用者是否给存储过程参数设置值) inout:调用者还可以通过 inout 参数传递值给存储过程,也可以从存储过程内部传值给调用者 如果仅仅想把数据传给 MySQL 存储过

定时器相关 setTimeout setInterval

这个问题也是在参加百度的前端技术学院中遇到的 任务中需要用js实现动画  导师给的评价中setInterval会导致bug 当时不理解   下面把自己学习的过程分享出来 再次理解单线程   老是说js是单线程的,其实自己根本没有好好的理解好这个单线程的意思,就比如我对这个setTimeout(function(){},time)的理解就是在从现在开始到time时间点就会执行的一段代码,其实这样的理解是有问题的,定时器只是计划代码在未来的某个时间执行,但是这个时机是无法保证的 ,这句话能更好的帮助