我正在努力研究如何使这个计数器工作。播放了一定数量的动画后,我想刷新页面。我知道我的代码很糟糕。我没有接受过这方面的教育而且我很新,更不用说现在我很难集中注意力(至少可以说是这样)...所以要好好。这是:
$(document).ready(function () {
function loop() {
var p = 0;
if (p = 3) {
location.reload(true);
} else {
$("#p3").delay("1000").fadeIn("slow");
$("#p3").delay("1000").fadeOut("slow", loop);
p + 1;
};
loop();
});
答案 0 :(得分:2)
您的if (p = 3)
语句使用的是分配运算符=
,而不是比较运算符===
或==
。因此,p
被分配给3
,其结果是真实的,因此永远不会执行else
语句。
此外,p
变量在loop()
函数内声明,因此每次调用函数时都会重置 - 您可以将该声明移到函数之前(将其保留在文档中)处理程序:无需将其设为全局。)
行p + 1;
也没有做任何事情:它不会增加p
,因为您需要将结果分配回p
p = p + 1
,简写为p += 1
或p++
。
最后,您发布的代码存在语法错误:您错过了}
函数的结束loop()
。我猜想目的是结束函数然后调用它,所以:
$(document).ready(function () {
var p = 0; // <--- moved outside function
function loop() {
if (p === 3) { // <-- changed = to ===
location.reload(true);
} else {
$("#p3").delay("1000").fadeIn("slow");
$("#p3").delay("1000").fadeOut("slow", loop);
p++; // <-- changed from p + 1
};
} // <--- this is the missing bracket
loop();
});
答案 1 :(得分:1)
我已经做了一些假设,写下了我认为你想要的东西,代码没有经过测试。:
将其更改为:
$(document).ready(function () {
var globalP = 0;
//this is called when fadeOut completes.
function fadeComplete() {
if (globalP == 3) {//if it is 3 reload..
location.reload(true);
} else {
globalP++;//increment counter
animate();//start animation again...
}
}
function animate() {
//start fading in...
$("#p3").delay("1000").fadeIn("slow", function() {
//start fading out when the fadeIn completes.
//should this happen? Since you're fading in the SAME element.
$("#p3").delay("1000").fadeOut("slow", fadeComplete);
});
};
animate();
});