javascript - 简单的 jQuery 函数在 for 循环后仅返回零

标签 javascript jquery function variables for-loop

我有一个 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 变量返回零。我不确定是什么原因造成的。有谁知道我在这里做错了什么?我已经在这个问题上坚持了好几个小时了,所以如果您能给我任何帮助,我将不胜感激。

最佳答案

您正在同时启动多个异步操作。循环立即完成,但超时会稍后发生。

您可以使用一个无限计时器来简单得多,该计时器会停止并使用 fadeToggle() 淡入/淡出。

var count = 14;
var int = setInterval(function(){
    if (--count < 0){
        clearInterval(int);
    }
    $('#text').fadeToggle();
}, 500);

JSFiddle: http://jsfiddle.net/TrueBlueAussie/ev3b0das/

您可以使用数字和其他选项来尝试不同的效果(文本的初始隐藏等)

如果您不想淡入/淡出,请使用切换:

http://jsfiddle.net/TrueBlueAussie/ev3b0das/1/

如果您希望文本在末尾可见,请将计数设置为奇数:

http://jsfiddle.net/TrueBlueAussie/ev3b0das/2/

关于javascript - 简单的 jQuery 函数在 for 循环后仅返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29654738/

相关文章:

javascript - Javascript 中的闭包遇到问题

jquery - JQuery ajax调用的返回值

使用创建的对象调用另一个函数后,Javascript 创建的对象属性值未定义

python - 如何创建一个函数来查看字符串中的单个字母?

javascript - 将 jQuery 添加到 Header.php 文件失败

javascript - 如何在AJAX中形成授权CURL请求?

javascript - 使用 jquery 函数播放或暂停视频

javascript - 使用 ng-click 切换父元素的类?

javascript - 按日期排序,然后按位置排序

javascript - 在可重用的 Razor 类库中包含静态文件