私はこの素晴らしいコードを私にとって役に立ちます。これは、2つの円のプログレスバーを作成し、与えられたパーセンテージ値に応じてアニメートします。異なるインデックスを持つjs関数のループを作成します
インデックスを除いてほぼ同じである2種類の機能があります。timer_0
とtimer_1
です。どのようにしてループを作成し、これらの関数を接尾辞で呼び出すことができますか?どんな助けもありがとう。
HTML部分
<div class="row">
<div class="col-sm-3">
<div class="progress progress-radial">
<svg width="160" height="160" viewBox="0 0 160 160" data-progress-value="95">
<circle class="progress-meter" cx="80" cy="80" r="78" fill="none" stroke-width="4" />
<circle style="stroke-dasharray: 490.088; stroke-dashoffset: 50.000;" stroke='red' class="progress-value" cx="80" cy="80" r="78" fill="none" stroke-width="4" />
</svg>
<div class="progress-body">
<div class="progress-data-value">
60%
</div>
<div class="progress-title">
Skill
</div>
</div>
</div>
</div>
<div class="col-sm-3">
<div class="progress progress-radial">
<svg width="160" height="160" viewBox="0 0 160 160" data-progress-value="95">
<circle class="progress-meter" cx="80" cy="80" r="78" fill="none" stroke-width="4" />
<circle style="stroke-dasharray: 490.088; stroke-dashoffset: 50.000;" stroke='red' class="progress-value" cx="80" cy="80" r="78" fill="none" stroke-width="4" />
</svg>
<div class="progress-body">
<div class="progress-data-value">
20%
</div>
<div class="progress-title">
Skill
</div>
</div>
</div>
</div>
</div>
Javascriptの一部
jQuery(document).ready(function() {
jQuery('circle.progress-value').each(function(){
progress_circle_set = 100 - parseInt(jQuery(this).parent().parent().find('.progress-data-value').text());
jQuery(this).attr('data-progress-set', Math.round(progress_circle_set * 490/100));
});
timer_0();
function timer_0() {
progress_circle_set = jQuery('.progress-value').eq(0).attr('data-progress-set');
if (jQuery('.progress-value').eq(0).attr('data-progress-current')) {
progress_circle_current = jQuery('.progress-value').eq(0).attr('data-progress-current');
} else {
progress_circle_current = 490;
}
progress_circle_current--;
jQuery('.progress-value').eq(0).attr('data-progress-current', progress_circle_current);
if (progress_circle_current != progress_circle_set) {
jQuery('circle.progress-value').eq(0).css('stroke-dashoffset', progress_circle_current);
} else {
return;
}
setTimeout(timer_0, 10);
}
timer_1();
function timer_1() {
progress_circle_set = jQuery('.progress-value').eq(1).attr('data-progress-set');
if (jQuery('.progress-value').eq(1).attr('data-progress-current')) {
progress_circle_current = jQuery('.progress-value').eq(1).attr('data-progress-current');
} else {
progress_circle_current = 490;
}
progress_circle_current--;
jQuery('.progress-value').eq(1).attr('data-progress-current', progress_circle_current);
if (progress_circle_current != progress_circle_set) {
jQuery('circle.progress-value').eq(1).css('stroke-dashoffset', progress_circle_current);
} else {
return;
}
setTimeout(timer_1, 10);
}
});
[ウィジェット](http://api.jqueryui.com/jQuery.widget/)として定義されることによって利益を得るもののように見えます。 –