0

スライダーを動的に作成しています。「Slide」イベントと「Stop」イベントで、非動的コンテンツで定義されている関数を呼び出したいと思います。スライダーを使って毎回関数を作成すれば関数を動作させることができますが、それは多くの冗長なコードのように見えますか?

非動的機能

    $(document).ready(function() {
var converSecondsToMinutes;

convertSecondsToMinutes = function(secondsEntered){
    var secondsEntered = secondsEntered;

    var time = parseInt(secondsEntered,10);
    time = time < 0 ? 0 : time;

    var minutes = Math.floor(time / 60);
    var seconds = time % 60;

    minutes = minutes < 9 ? "0"+minutes : minutes;
    seconds = seconds < 9 ? "0"+seconds : seconds;
    var newTime = minutes+":"+seconds
    console.log(newTime);
    return newTime
}
});

動的jQueryスライダー

    <?php
query...
result...
for(...){
?>
<Script>
$( "#slider"+<?php echo $id; ?> ).slider({ 
            animate: true ,
            value: 0,
            min: 0,
            //dynamic grab this
            max: <?php echo $playtime_seconds; ?>,
            step: 0.01,
            start: function( event, ui ) {
                ....
            },
            slide: function( event, ui ) {
                audio = ....
                audio.currentTime = ui.value;
                progress_seconds = parseFloat(audio.currentTime.toFixed(2));
                progress_seconds = $(function(){convertSecondsToMinutes(progress_seconds);});

                $('#progress_seconds'+<?php echo $id; ?>).html(progress_seconds);

            },
            stop: function( event, ui ) {
                ....
                }
            }

        });


    });

}

質問にとって重要なコードの部分を切り取って貼り付けました。

これは機能していない行です:$('#progress_seconds' +)。html(progress_seconds);

4

1 に答える 1

1

コメントした直後に編集したため、コメントが意味をなさなくなったため、コードの$(function(){部分は必要ありません。次を使用してみてください。

progress_seconds = converSecondsToMinutes(progress_seconds);

そして、コードのスペルミスは私にとって本当の問題です、コンバースは最後に持っています。

また、関数を$(document).ready()でラップする必要はなく、次のように宣言します。

function convertSecondsToMinutes(secondsEntered)
{
    var time = ...
    ...
}
于 2012-11-09T18:55:46.910 に答える