You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery中使用setTimeout实现循环定时函数不执行该如何解决?

问题原因与修复方案

你的代码存在3个核心问题,导致函数没有按预期执行:

  • 你调用setTimeout时直接写了Rotate(i),这种写法会立即执行Rotate函数,而不是把函数作为回调交给定时器触发,相当于你把Rotate执行后的返回值(这里是undefined)传给了定时器,定时器后续不会执行任何逻辑
  • 初始定时器的时长设置错误:你写的50000000毫秒换算后约等于13.9小时,自然看不到触发效果
  • 函数形参i和外层定义的计数变量i命名冲突,属于不规范写法,容易引发逻辑混乱

修正后的代码

jQuery( document ).ready(function() {
    var words = ["Crear","Evolucionar","Sanar","perdonar","Volver a amar","Brillar"];
    var i = 0;
    function Rotate() {
        jQuery( "#fade-text" ).fadeOut( "slow", function() {
            jQuery( "#fade-text" ).html(words[i])
            jQuery( "#fade-text" ).fadeIn( "slow" , function(){
                i = i + 1
                console.log(i)
                if(i == words.length )
                    i = 0;
                // 直接传入函数引用,等定时结束再执行
                setTimeout(Rotate, 5000);
            });
        }); 
    }
    // 初始触发时长改成5000毫秒即5秒,可按需求调整
    setTimeout(Rotate, 5000);
}); 

如果需要保留把i作为参数传递的写法,也可以用如下两种形式调用定时器:

// 箭头函数包裹写法
setTimeout(() => Rotate(i), 5000);
// setTimeout原生传参写法
setTimeout(Rotate, 5000, i);

内容的提问来源于stack exchange,提问作者user3098629

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:24:02