2016-12-13 5 views
-2

私は多くのボタンを持つビデオを持っています、各ボタンは、5秒待ってから、特定のポイントにビデオ転送を行います。 button.id"skipping"に等しいsetTimeoutの待機時間をスキップ

function setTimeVid(button) { 
      if(button.id=='b1'){ 
       timerId=setTimeout(function(){ 
        vid.currentTime=point1; 
       },5000); 
      } 
      if(button.id=='b2'){ 
       timerId=setTimeout(function(){ 
        vid.currentTime=point2; 
       },5000); 
      } 
// and 5-6 more 

最終ボタンは、待ち時間5秒をキャンセルし、すぐに機能を実行する必要があります。

setTimeoutが既に起動している場合にのみ、「スキップ」ボタンを押すことができます。私は5秒待ってすぐにそれを実行する必要があります。どうすればこれを達成できますか?

+1

定かではない何か質問があるclearTimeout方法を探していますか? 'javascript'の中で' clearTimeout(timerId) 'を呼び出しますか? – guest271314

+0

clearTimeoutがありません。これは関数をキャンセルするだけです。私は5秒待ってからすぐに実行する必要があります。 –

+0

'setTimeVid'を呼び出すたびに' timerId'を設定して上書きしています。 – guest271314

答えて

1

あなたは

let timeoutReference; 
 

 
const startButton = document.getElementById('start'); 
 
const skipButton = document.getElementById('skip'); 
 

 
const yourFunction =() => { 
 
    const text = document.createElement('div'); 
 
    text.innerHTML = 'sarasa'; 
 
    document.body.appendChild(text); 
 
    skipButton.disabled = true; 
 
} 
 

 
const waitTime =() => { 
 
    timeoutReference = setTimeout(yourFunction, 2000); 
 
} 
 

 
startButton.addEventListener('click',() => { 
 
    skipButton.disabled = false; 
 
    waitTime(); 
 
}); 
 

 
skipButton.addEventListener('click',() => { 
 
    clearTimeout(timeoutReference); 
 
    yourFunction(); 
 
});
<button id="start">Start</button> 
 
<button id="skip" disabled>Skip</button>

+1

'setTimeout(yourFunction、2000)'に単純化することができます。 'toggleDisable'は使用されません。スキップボタンで 'yourFunction()'を呼び出した後に明示的にボタンを無効にする必要はありません – Bergi

+0

@Arkadis Stepanovはあなたが探しているものですか? – mattias

関連する問題