代码之家  ›  专栏  ›  技术社区  ›  CheeseConQueso

还有一个简单的jquery进度条问题

  •  0
  • CheeseConQueso  · 技术社区  · 16 年前

    我想修改这段代码,使其值是一个变量,从而使进度条实时刷新(或可能的最小时间单位-毫秒)。

    我要“播种”当前时间来驱动更新

    <script type="text/javascript">
    $(function() 
    {             
        $("#container").progressbar({ value: 0 });
    });
    </script>
    


    Fosco的编辑:(目前不工作)
        <script type="text/javascript">
        updateProgress(0);
        function updateProgress(newvalue) 
        {
            $("#container").progressbar({ 'value': newvalue });
            newvalue = newvalue + 1
            if (newvalue < 101) setTimeout('updateProgress(' + newvalue + ');',100);
        }
        </script>
    
    3 回复  |  直到 16 年前
        1
  •  1
  •   James Gaunt    16 年前

    第一位很容易

    <script type="text/javascript">
    $(function(value) 
    {             
        $("#container").progressbar({ value: value });
    });
    </script>
    

    下一步就不那么容易了。进度条的目的是显示进度,那么它显示的进度是什么?您应该尽可能频繁地从执行所反映的任何操作的代码中调用此函数。

    如果您只想循环代码,那么设置一个超时,在1毫秒后调用函数,然后重复。

    值得一提的是,大多数浏览器的实际最小时间分辨率不是1毫秒,而是要少得多。

        2
  •  2
  •   Fosco    16 年前

    问题是,是什么驱动了这次刷新?你只需要知道这些。什么价值会改变?

    无论在何处更改,都要更改ProgressBar的值。

    $("#container").progressbar({ value: 10 }); 
    

    根据你说的时间播种?…

    function updateProgress(newvalue) {
        $("#container").progressbar({ 'value': newvalue });
        newvalue = newvalue + 1
        if (newvalue < 101) setTimeout('updateProgress(' + newvalue + ');',100);
    }
    

    那么启动它的初始功能是:

    updateProgress(0);
    

    试一试。

        3
  •  1
  •   Mike C    16 年前

    通过“实时”,我假设您的意思是希望在完成一系列步骤后对其进行更新。如果您希望根据时间的推移更新进度条,我建议您只使用某种动画图形。否则,您可以在函数实际完成之前到达进度条的末尾,这会让您的用户感到困惑。

    我在一个应用程序中使用了进度条,在该应用程序中,我有三个任务要执行以完成一个操作。每个任务都是通过自己的Ajax调用提交的,并且每个任务的成功处理程序中都包含以下内容:

    $('.progress').progressbar('option', 'value', $('.progress').progressbar('option', 'value') + 33);
    

    也就是说,每次完成一个任务时,我都会在进度条的当前值上添加33。