2010-08-19 38 views
0

我想,這樣的值是一個變量,從而使進度條實時(或時間儘可能小計 - 毫秒)刷新修改此代碼另一個簡單的jQuery進度條的問題

我將 「種子」 當前的時間來驅動更新

<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> 
+1

你可以看到我是如何做到在這裏: http://stackoverflow.com/questions/3454034/javascript-progress-animation/3454173#3454173 – webdad3 2010-08-19 19:49:18

回答

1

的第一位是容易

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

下一位不那麼容易。進度條的目的是顯示進度,那麼它展示的進度是什麼?您應該儘可能經常地從執行所反映的任何操作的代碼中調用該函數。

如果你只是想循環代碼,然後設置一個超時在1毫秒後調用函數,然後重複。

值得一提的是,大多數瀏覽器的實際最小時間分辨率不是1毫秒,而是比較少。

+0

這基本上是我在找什麼,謝謝 – CheeseConQueso 2010-08-19 20:04:41

+0

哦,我該如何去重置並重復 – CheeseConQueso 2010-08-19 20:05:07

+0

1ms的超時調用函數,函數更新進度條,然後再次調用超時,以相同的功能。 ......這裏最困難的部分是停止循環。但這就是你正在監測的實際事物應該進來的地方。你可以監測一個全局變量來停止循環。另一個問題是,如果你不把它與被監控的實際代碼聯繫起來,你怎麼知道你在這個過程中有多遠(即你是在50%還是在90%) - 但這當然取決於你。祝你好運。 – 2010-08-19 20:08:01

2

鐠問題是,什麼會推動這個刷新?這就是你需要知道的一切。什麼價值會改變?

無論哪裏都在改變,改變進度條的值。 ?

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

播種基於時間,你說......

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

那麼你的初始功能來啓動這將是:

updateProgress(0); 

給一個鏡頭。

+0

時間驅動刷新......我想「種子」的時間 – CheeseConQueso 2010-08-19 20:03:01

+0

然後你可以使用setInterval或setTimeout函數來實現這一點。 – Fosco 2010-08-19 20:08:22

+0

無法按預期工作....請參閱編輯?難道我做錯了什麼? – CheeseConQueso 2010-08-20 02:30:06

1

通過'實時',我假設你的意思是你想要更新它,因爲一系列的步驟完成。如果您希望根據時間的推移更新進度條,我建議您只使用某種動畫圖形。否則,在函數實際完成之前,您可能會到達進度條的末尾,這會讓用戶感到困惑。

我在一個應用程序中使用了進度條,在這個應用程序中,我需要執行三個任務才能完成某個操作。每個任務都有自己的Ajax調用提交,每個包含在其成功處理程序如下:

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

也就是說,我加33每次的任務之一就是完成進度條的當前值。

+0

即時通訊不擔心混亂,因爲我會在完成時重置此欄 - 即時將它用作循環/循環欄而不是進度 – CheeseConQueso 2010-08-19 20:07:36