javascript - js计时器函数如何传参数?
伊谢尔伦
伊谢尔伦 2017-04-11 10:07:32
[JavaScript讨论组]

代码:

var num=120;//初始化
            var timer=setTimeout(run(top),100);//我想在这里传入obj=top
            function run(obj){
                num--;
                if(num>=-120){
                    obj.style.right=-num+"%";
                }else{
                    num=120;
                    obj.style.right=-num+"%";
                }
                setTimeout(run(obj),100);
            }
            timer;
//报错Uncaught RangeError: Maximum call stack size exceeded

因为这个计时器在该页面有多个元素调用,我不可能每个元素都要绑定一次吧?所以我就想写个公用的,然后传入obj,再各自调用,可是传入不了,求大神解答

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(3)
ringa_lee
function run(obj){
    return function(){
        //你的代码,里面调用obj
    }
}
PHP中文网

https://developer.mozilla.org...

timeout接受的第一个参数要么是代码字符串要么是一个函数。

如果你想给setTimeout传参,改一改思路~

比如这样

function run(){
}
function st(arg, delay){
    setTimeout(function(){
        run(arg);
    },delay);
}
伊谢尔伦

没有太理解需求,题主是要这样?

var num=120;//初始化
            var timer=setTimeout(function(){
              run(top);
            },100);//我想在这里传入obj=top
            function run(obj){
                num--;
                if(num>=-120){
                    obj.style.right=-num+"%";
                }else{
                    num=120;
                    obj.style.right=-num+"%";
                }
                setTimeout(function(){
                  run(obj);
                },100);
            }
            timer;
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号