2016-05-04 4 views
1

私はポイントAからポイントBまで繰り返すmp3ファイルを持っています。開始時間と終了時間の間隔を設定しますが、一時停止を押すと、機能が繰り返されるまで一時停止します。 Javascriptを一時停止して完全に停止させるにはどうすればよいですか?間隔を設定するためのJavascript

var audio = document.getElementById('testPlayer'); 
setInterval(function play1(){ 
    audio.currentTime = 7; 
    audio.play(); 
    int = setInterval(function() { 
     if (audio.currentTime > 100) { 
      audio.pause(); 
      clearInterval(int); 
     } 
    }, 10); 
}, 7000); 
function pause(){ 
    audio.pause(); 
} 

ありがとうございました。

+0

はちょうど 'イベントハンドラをバインド代わりに使用することを検討し、読者のための運動として、クロスブラウザの実装を残しますsetInterval' – zzzzBov

答えて

2

変数をクリアするには、変数にインターバルを割り当てる必要があります。これを追加

試してみてください。

var play1interval = setInterval(function play1(){ 
    ... 
    if (audio.currentTime > 100) { 
     audio.pause(); 
     clearInterval(int); 
     clearInterval(play1interval); 
    } 
    }, 10); 
}, 7000); 

また、あなたではなく、直接にそれを追加することよりも、機能を参照するために間隔を伝えることができます。

function play1(){ 
    ... 
} 

function interval(){ 
    var int = setInterval(play1, 10); 
} 

var play1interval = setInterval(interval, 7000); 

これは必須ではありません。読みやすくするだけです。

+0

コードは次のようになりますか? var audio = document.getElementById( 'testPlayer'); VAR play1interval =たsetInterval(関数PLAY1(){ audio.currentTime = 7; audio.play(); IF(audio.currentTime> 100){ audio.pause(); てclearInterval(INT); てclearInterval (play1interval); } }、10); }、7000); – EliTownsend

0

この機能を一時停止して完全に停止するにはどうすればよいですか?

setIntervalを使用しないでください。 <audio>がトリガーするイベントの束があります。

単純なループは、timeupdateイベントを使用して行うことができます。

document.querySelector('audio').addEventListener('timeupdate', function (e) { 
 
    if (e.target.currentTime > 6) { 
 
    e.target.currentTime = 0; 
 
    } 
 
}, false);
<audio src="http://167.88.156.219/phc/2016/04/30/phc_20160430_128.mp3" controls autoplay></audio>

私はクロームでこれをテストしているので、私は

+0

あなたはどのようにして9秒後に始まり13時に終了するのですか? – EliTownsend

+0

@EliTownsend、別の比較セットを使用するようにコードを変更します。 – zzzzBov

+0

@EliTownsendでも、あなたが望むものだけを再生するようにオーディオファイルを切り取ってから、 '

関連する問題