2011-12-21 16 views
0

幅が308pxのdivがあります。このdivには、バッファーバー(0から308までの任意の長さが可能)があります。div内のクリックに基づいて位置を計算する方法

divは、再生中のオーディオトラックの進行状況を示すために使用されます。オーディオトラックの所要時間はミリ秒です。

私は、divのクリックに基づいてトラックの位置を変更できるようにしようとしています。しかし、私の数学はすべて間違っています。

私が現在持っていることは次のとおりです。

var pos = e.pageX - $(this).offset().left; // returns the position of the click in the div (0 to 380) 
var relpos = parseInt(308, 10)/parseInt(pos, 10); 
var newpos = parseInt(duration, 10)/parseInt(relpos, 10); 

divの上のクリックした位置に基づいて、新たな位置を計算する方法は?

テストする場合は、fiddleをセットアップしました。

答えて

3

最初に、サイズを変更する必要がある場合は、308を実際にバッファ幅に置き換える必要があります。 コードです:

(function($) { 
    var duration = 138736; 
    $(document).on('click', '.buffer', function(e) { 
    var pos = e.pageX - $(this).offset().left; 
    var relpos = duration*pos; 
    var newpos = relpos/308; 

    $('.test').html(pos + '/' + newpos + '/' + duration); 
    }); 
    })(jQuery); 

308は、posは、X、X =(POSの*時間)よりも、期間 であれば/ 308

+0

私は学校に注意を払っていないことを選択します。とにかく誰が正しいのですか? ;)ありがとう! – PeeHaa

関連する問題