必要なのは、投稿した質問のこの例だけです:
http://jsfiddle.net/526hM/
onload にアタッチする部分は次のとおりです。
$(document).ready(function(){
...
setTimeout(animator, updatesPerSecond);
}
animator
代わりに、この関数をボタンにアタッチするだけです。効果が 3 秒で発生するようにするには、タイミング変数を更新します。
HTML:
<progress max="200" value="0"></progress>
<button id="theButton">Start!</button>
脚本:
$(document).ready(function(){
var msecsPerUpdate = 1000/60; // # of milliseconds between updates, this gives 60fps
var progress = $('progress');
var duration = 3; // secs to animate for
var interval = progress.attr('max')/(duration*1000/msecsPerUpdate);
var animator = function(){
progress.val(progress.val() + interval);
if (progress.val() + interval < progress.attr('max')){
setTimeout(animator, msecsPerUpdate);
} else {
progress.val(progress.attr('max'));
}
}
$('#theButton').click(function(e) {
e.preventDefault();
animator();
});
});
デモ: http://jsfiddle.net/526hM/28/