【发布时间】:2018-09-17 02:18:53
【问题描述】:
我有一个程序,其中一个 html 按钮调用一个 jQuery 函数(称为 funcOne)。该函数反过来调用一个递归函数(称为 funcTwo),它会更改 DOM 中的一些 CSS。 funcTwo 包含两个 setTimeout() 调用来延迟 CSS 更改,创建一种闪烁效果。
funcOne 看起来像这样:
function funcOne(stringOfNumbers){
//This function does some other stuff that does not interfere with funcTwo
someUnrelatedFunction();
funcTwo(time);
return;
}
funcTwo 看起来像这样:
function funcTwo(time){
if(time == ""){return true;}
var delay = time.charAt(0);
var numDelay = parseInt(delay);
setTimeout(function(){
$("#container").css("background-color", "white");
console.log("Changed to white");
}, 1000); //Arbitrary delay
setTimeout(function(){
$("#container").css("background-color", "black");
console.log("Changed to black");
}, numDelay); //Variable delay
time = time.substr(1);
return funcTwo(time);
}
控制台显示两条消息,所以我知道脚本正在运行。我没有收到任何堆栈溢出错误。 但是,两种延迟(任意延迟和可变延迟)都不会运行。 #container 立即变黑。
我做错了什么?非常感谢任何帮助。
【问题讨论】:
标签: javascript jquery css recursion settimeout