2017-04-13 51 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'); 

上述代碼停止響應和debuger顯示此行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

debugger在$('video')顯示腳本暫停。get(0).currentTime代碼 – arun

+0

請問爲什麼currentTime不提供更新cueernt每當我訪問它的玩家時間 – arun

+0

@arun像989213一樣執行'while'次,您的視頻時間不會更新,因爲您的代碼阻止了任何進一步的執行,瀏覽器會檢測到您將無限循環並終止它。 – Justinas

相關問題