私はJSアニメーションで簡単なプログレスバーを持っています。 20msごとに、プログレスバーの値は0.25増加します。下のJSFiddleで見ることができるように、プログレスバーを完成するには20 * 4 * 100ms = 8秒かかります。2つのsetIntervalが同じ時刻になるようにする方法
function updateProgress(currentValue, expectedValue){
var inProgress = setInterval(function() {
currentValue = currentValue + 0.25;
$('#progress-bar').attr('value', currentValue);
$('#progress-text').text(Math.round(currentValue));
if (currentValue == expectedValue) clearInterval(inProgress);
}, 20);
}
updateProgress(0, 100);
<progress id="progress-bar" value="0" max="100"></progress>
<div><span id="progress-text">0</span>%</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
私は同じコードを取り、50%ではなく0%にプログレスバーを起動するのであれば、それは、プログレスバーを完了するために、20の* 4 * 50ミリ秒= 4秒かかります以下のJSFiddleで見ることができます。
function updateProgress(currentValue, expectedValue){
var inProgress = setInterval(function() {
currentValue = currentValue + 0.25;
$('#progress-bar').attr('value', currentValue);
$('#progress-text').text(Math.round(currentValue));
if (currentValue == expectedValue) clearInterval(inProgress);
}, 20);
}
updateProgress(50, 100);
<progress id="progress-bar" value="50" max="100"></progress>
<div><span id="progress-text">50</span>%</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
私は、開始値のlooklessを常に実行するために同じ時間を持っている機能をしたいと思います。 たとえば、0〜100:4秒、50:100も4秒です。
が、私はこれを試みたが、それは動作しません:
function updateProgress(currentValue, expectedValue){
var interval = 4000/(expectedValue - currentValue)/4;
var inProgress = setInterval(function() {
currentValue = currentValue + 0.25;
$('#progress-bar').attr('value', currentValue);
$('#progress-text').text(Math.round(currentValue));
if (currentValue == expectedValue) clearInterval(inProgress);
}, interval);
}
updateProgress(50, 100);
正確には、問題は、0から100までの期間を200msとしたい場合に発生するため、私の間隔は200/100/4 = 0.5msです。そして、バーは完了するまでに200ミリ秒以上の時間がかかり、私はなぜそれを見つけることができませんでした!あなたのお返事ありがとうございます@skirtle – Vald