Еще один простой вопрос о прогрессе в jQuery - PullRequest
0 голосов
/ 19 августа 2010

Я хочу изменить этот код, чтобы значение было переменной и чтобы индикатор выполнения обновлялся в реальном времени (или наименьшем возможном метре времени - миллисекундах)

Я собираюсь «посеять» текущее время для запуска обновлений

<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 ]

2 голосов
/ 19 августа 2010

Проблема в том, что будет за рулем этого обновления?Это все, что вам нужно знать.Какое значение будет меняться?

Везде, где это меняется, измените значение индикатора выполнения.

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

высев в зависимости от времени, которое вы говорите? ...

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

затем ваша первоначальная функциядля начала это будет:

updateProgress(0);

дать этому выстрел.

1 голос
/ 20 августа 2010

Под «реальным временем» я предполагаю, что вы хотите обновить его после завершения ряда шагов.Если вы хотите обновить индикатор выполнения с течением времени, я рекомендую использовать какую-нибудь анимированную графику.В противном случае вы могли бы достичь конца индикатора выполнения до фактического завершения функции, что может сбить с толку ваших пользователей.

Я использовал индикатор выполнения в приложении, где у меня было три задачи для выполнения действия.,Каждая задача была отправлена ​​с собственным вызовом ajax, и каждая из них включала в свой обработчик успеха следующее:

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

То есть я добавлял 33 к текущему значению индикатора выполнения каждый раз, когда одна из задач былазавершено.

1 голос
/ 19 августа 2010

Первый бит прост

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

Следующий бит не так прост.Цель индикатора выполнения - показать прогресс, так что же он показывает прогресс?Вы должны вызывать эту функцию из кода, который выполняет любое отображаемое действие, так часто, как только можете.

Если вы просто хотите зациклить код, установите тайм-аут для вызова функции через 1 мс, иповторение.

Стоит отметить, что фактическое наименьшее временное разрешение большинства браузеров составляет не 1 мс, а немного меньше.

...