2017-04-13 4 views
1
var startTime = parent.startTime; 
var endTime = parent.endTime; 
var divID = '#'+parent.divId; 
var description = parent.description; 

do { 
    var currentTime1 = $('video').get(0).currentTime; 
    if(currentTime1 >= startTime) { 
     console.log('in if');alert('hi'); 
     parent.$(divID).append(description); 
    } 
    setTimeout(function(){$('video').get(0).currentTime = $('video').get(0).currentTime + 1; currentTime1 = parseInt($('video').get(0).currentTime); }, 1000); 

} while (currentTime1 <= endTime); 

parent.$(divID).empty(); console.log('at end'); 

위 코드는 응답을 중지하고 디버거가이 줄을 보여줍니다. var currentTime1 = $ ('video'). get (0) .currentTime;비디오 플레이어를 현재 시간으로 가져 오는 동안 javascript가 응답을 멈 춥니 다.

+0

콘솔에서 콘솔 출력을 확인 했습니까? 그렇다면 게시하십시오. – Difster

+0

이것은 무한 루프에 들어가는 것을 의미합니다. currentTime1과 endTime을 기록하여 유효한 시간 객체인지 확인하십시오. –

+0

currentTime은 항상 0이 아니며 endtime은 15이지만이 스크립트에서는 처음으로 스크립트가 중지됩니다. currentTime1 = $ ('video'). get (0) .currentTime ; – arun

답변

1
var startTime = parent.startTime; 
      var endTime = parent.endTime; 
      var divID = '#'+parent.divId; 
      var description = parent.description; 

      var myVar = setInterval(check,1000); 
function check() 
     { 
      var currentTime1 = parseInt($('video').get(0).currentTime); 

      if(currentTime1 >= parent.endTime) 
      { 
       clearInterval(myVar); 
       parent.$(divID).empty(); 
      } 
      else if(currentTime1 >= parent.startTime) 
      { 
       parent.$(divID).empty(); 
       parent.$(divID).append(description);      
      } 
     } 

이 코드는 루프 구조없이 작동합니다. setInterval()은 반복 동작을 반복하는 데 사용됩니다.

2

코드는 때문에

do { 
    var currentTime1 = $('video').get(0).currentTime; 
} while (currentTime1 <= endTime); 

브라우저가 허용하는 그것은 빨리 실행 년대, 무한 루프에 도달, 그래서 setTimeout이 1 초 후 실행됩니다하고 currentTime1 변경하지 않습니다 있기 때문에,의 박히.

논리를 변경해주십시오 - use video events, like timeupdate

+0

디버거가 $ ('video')에서 스크립트 중지를 보여줍니다. get (0) .currentTime 코드 – arun

+0

currentTime이 플레이어의 업데이트 된 시간을 제공하지 않는 이유를 알려주십시오. – arun

+0

@arun 989213과 같이 'while'을 실행합니다. 코드가 추가 실행을 차단하기 때문에 비디오 시간이 업데이트되지 않고 브라우저가 무한 루프를 감지하고 종료합니다. – Justinas