Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用javascript';多次运行匿名函数;设置超时_Javascript_Settimeout - Fatal编程技术网

使用javascript';多次运行匿名函数;设置超时

使用javascript';多次运行匿名函数;设置超时,javascript,settimeout,Javascript,Settimeout,我正在网站上使用以下功能。请原谅我正在使用的草率jQuery,有没有任何方法可以多次运行这个函数而不将其声明为独立函数,也不需要多次复制和粘贴代码 附件A: setTimeout(function(){ $('.nav > li > a').each(function(k,el){ var width = $(this).parent().width(); $(this).next('span').width(width); });

我正在网站上使用以下功能。请原谅我正在使用的草率jQuery,有没有任何方法可以多次运行这个函数而不将其声明为独立函数,也不需要多次复制和粘贴代码

附件A:

setTimeout(function(){

    $('.nav > li > a').each(function(k,el){
        var width = $(this).parent().width();
        $(this).next('span').width(width);
    });

},1000);
我不想这样做:

setTimeout(function(){
        // same code here   
},1000);

setTimeout(function(){
        // same code here   
},3000);

setTimeout(function(){
        // same code here   
},5000);
function myfunction{
    // same code here   
}

setTimeout('myFunction()',1000);
setTimeout('myFunction()',3000);
setTimeout('myFunction()',5000);
我也不想这样做:

setTimeout(function(){
        // same code here   
},1000);

setTimeout(function(){
        // same code here   
},3000);

setTimeout(function(){
        // same code here   
},5000);
function myfunction{
    // same code here   
}

setTimeout('myFunction()',1000);
setTimeout('myFunction()',3000);
setTimeout('myFunction()',5000);
是的,使用这个方法

或者,您可以重复调用setTimeout

myFun = function() {
    $('.nav > li > a').each(function(k,el){
      var width = $(this).parent().width();
      $(this).next('span').width(width);
    });
    setTimeout(myFun, 2000);
}

setTimeout(myFun,1000);
这应该与执行10003000等操作具有相同的效果。

您可以使用

for (var i = 1000; i <= 5000; i += 2000) {
    setTimeout(func, i);
}
(函数(){
变量i,古怪问题=函数(超时){
setTimeout(函数(){
$('.nav>li>a')。每个(函数(){
var width=$(this.parent().width();
$(this).next('span').width(width);
});
},超时);
};

对于(i=1;我希望它在setTimeout结束时调用自身(基本上每X秒运行一次)或者用同一个函数对setTimeout进行n次不同的调用?如何使它在10秒后停止?如果使用setInterval,可以使用clearInterval。或者,如果必须从1,3等开始计数,则可以为经过的时间设置一个变量,如果大于10秒,则不调用最终的setTimeout。实际上,它不太起作用。映射循环工作ks,但只设置了一个setTimeout。应该是这样的,我以前把时间和索引值混在一起了。很好地使用了原生js+1的映射,我不知道forEach。这是一个很好的映射,我会使用它。我只检查firefox和works,会检查所有主要的浏览器,如果这是它们的一部分,这是一个非常棒的东西,你刚刚向我展示了它易用性条款。IE8不支持它。你难道不知道IE将是该组的傀儡吗。希望IE9支持。让我知道我有一台mac。谢谢。看起来不错。+1。这是在使用typekit呈现导航字体后,我正在调整导航菜单项的大小-因此需要一个超时,如果用户连接速度慢,需要多个超时;)相信我,谷歌字体更适合使用。不会出现刷新。我不喜欢typekit,但我知道它确实有更多设计师需要的标准字体。只是需要将刷新作为其中的一部分。:)事实上,我对typekit的性能相当满意,我相信字体会被缓存,从而提高加载时间。我要解决的问题是使用一些下拉菜单进行复杂的覆盖,问题是$(document)与.ready在呈现字体时发生。在查看页面加载时,我实际上看不到它,但是$(el).width()的值事实上,如果你稍等片刻,情况就不同了:)再次感谢你的回答。我根据客户的请求使用typekit访问了klim.com。如果你检查一个outtypekit应该有一个javascript api,你可以在加载时使用它,设置的超时不可靠,最好使用该api来知道什么时候加载了东西,你应该重新访问它。
[1000, 3000, 5000].forEach(function(time){
    setTimeout(func, time);
});
$.map([1000,3000,5000], function(time,index){ 

 setTimeout(function(){
        $('.nav > li > a').each(function(k,el){
        var width = $(this).parent().width();
        $(this).next('span').width(width);
    });
 },time);

}); 
(function(){
    var i, weirdProblem = function(timeout) {
        setTimeout(function() {
            $('.nav > li > a').each(function(){
                var width = $(this).parent().width();
                $(this).next('span').width(width);
            });
        },timeout);
    };
    for(i = 1; i <= 5; i+=2) {
        weirdProblem(i*1000);
    }
})();