javascript - 如何在不设置 setInterval 的情况下激活我的进度条

标签 javascript jquery html css twitter-bootstrap-3

我想做的是让 porgressbar 运行,如果我点击进度条的链接,然后在进度条达到 100% 后重定向到 Profile form。我正在使用 javascript 显示和隐藏表单制作单页网站。

我的问题是当程序启动时,进度条也会启动,即使我在 Home form 中,它也会自动重定向到 Profile form。

当前输出:

http://jsfiddle.net/6VrXD/25/

var value = 0, progress;

//progress bar script
function progressBar() {
    progress = setInterval(function () {
        var $bar = $('.bar');
        if (value >= 100) {
            clearInterval(progress);
            $('.progress').removeClass('active');
            // go to profile after progress bar reaches 100%
            $(".show-page[data-page=Profile]").trigger("click");
        } else {
            value += 10;
            $bar.width(value * 4);
        }
        $bar.text(value + "%");
    }, 800);
};

最佳答案

发生这种情况是因为您在 $(document).ready 回调上调用 progressBar 函数,即使起始页面不是进度条页面。因此,无论进度条是否实际显示,该函数都会执行它应该执行的操作。

删除它应该会使代码按预期工作。 http://jsfiddle.net/6VrXD/27/

// vars 
var value = 0, progress;

//progress bar script
function progressBar() {
    progress = setInterval(function () {
        var $bar = $('.bar');
        if (value >= 100) {
            clearInterval(progress);
            $('.progress').removeClass('active');
            // go to profile after progress bar reaches 100%
            $(".show-page[data-page=Profile]").trigger("click");
        } else {
            value += 10;
            $bar.width(value * 4);
        }
        $bar.text(value + "%");
    }, 800);
};
//for my show and hide form script
$(document).ready(function () {
    //progressBar();
    if (typeof (Storage) !== "undefined" && sessionStorage.getItem('pageToShow')) {
        var pageToShow = sessionStorage.getItem('pageToShow');
        $('.page').addClass('hide');
        $('.' + pageToShow).removeClass('hide');
    };
    $('.show-page').click(function () {
        var pageToShow = $(this).data('page');
        if (pageToShow == "progBar") {
            // reset progress var
            value = 0;
            $('.bar').width(0);
            $('.progress').addClass('active');
            progressBar();
        } else {
            clearInterval(progress);
        };
        $('.page').addClass('hide');
        $('.' + pageToShow).removeClass('hide');
        if (typeof (Storage) !== "undefined") {
            sessionStorage.setItem('pageToShow', pageToShow);
        };
    });
    $('.modal-btn').click(function () {
        $('.modal').modal('hide');
    });
});

关于javascript - 如何在不设置 setInterval 的情况下激活我的进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24126829/

相关文章:

javascript - 根据条件从 Html 表中删除一行

javascript 将 x 像素移向鼠标

javascript - 如何使用 animate 为scrollTop 函数设置动画

jquery - 为什么我的日期选择器看起来这么奇怪?

javascript - 通过拖动 div 的边缘水平调整 div 的大小

javascript - 启用 iPad VoiceOver 后,是什么导致 Safari 网页进入空白、灰色屏幕?

javascript - React,从另一个组件读取常量

javascript - 如何通过Jquery显示多个<options>

javascript - jQuery 最接近并且检查复选框不起作用

html - CSS 链接悬停不适用于图像