【发布时间】:2015-04-15 15:43:14
【问题描述】:
我有一个 jQuery 函数,我试图用它来最终使一些文本闪烁:
function blink() {
var blinks = 7;
blinks = blinks * 2; // Multiply by 2 to get an even number.
var vis;
for (i = 0; i < blinks; i++) {
if (vis == 1) {
setTimeout(function () {
$("#ticker").animate({
opacity: 0
}, 0);
vis = 0;
alert(vis);
}, 500);
} else {
//setTimeout(function () {
$("#ticker").animate({
opacity: 1
}, 0);
vis = 1;
alert("vis= " + vis);
//}, 500);
}
}
}
不过,我现在只是想让它返回正确的数字(1 或 0),具体取决于文本是否可见。如果文本已经打开,则该函数将其关闭一次,但随后它保持关闭状态,即使我正在重置“vis”变量以指示文本是否可见。但是,在 for 循环的第二次迭代之后,它只会为 vis 变量返回零。我不确定是什么原因造成的。有谁知道我在这里做错了什么?我已经坚持了好几个小时,所以您能给我的任何帮助将不胜感激。
【问题讨论】:
-
您正在同时启动多个异步操作。循环立即结束,但超时发生在稍后。
-
您的 for 循环将在 setTimeout 中的匿名函数运行时完成。
-
那么我应该以某种方式将 setTimeout 包裹在 for 循环中吗?
-
作为设计准则,闪烁文本(顺便说一句,在原始 HTML 浏览器中)是一个很大的禁忌 :)
-
这是大量的代码来简单地闪烁一些文本。您是否有 HTML 示例,以便我们制作一个不错的演示?
标签: javascript jquery function variables for-loop