2017-04-13 93 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

相关问题