此视频在视频达到指定时间时创建元素(我使用的是YouTube iFrame API)。它从来自服务器的json对象数组中获取信息。但是当几乎所有对象在显示和隐藏元素的过程中传递时,它开始按顺序添加到普通元素新元素。我不知道为什么要添加这些元素。
//当播放器准备就绪时,每1000毫秒开始检查当前时间。
function onPlayerReady() {
function updateTime() {
var oldTime = videotime;
if(player && player.getCurrentTime) {
videotime = +player.getCurrentTime().toFixed();
}
if(videotime !== oldTime) {
onProgress(videotime);
}
}
timeupdater = setInterval(updateTime, 1000);
}
//当时间改变时,将调用它。
function onProgress(currentTime) {
var ci = array_of_json.length;
console.log(currentTime);
for(i = 0; i < ci; i++){
if(currentTime === array_of_json[i].time) {
$(document).ready(function(){
$( '#pos_wrapper' ).prepend( "<div class='emotion " + array_of_json[i].emotion
+ "' style='display: none'></div>" );
(function(){
var selector = 'div.'+array_of_json[i].emotion;
$(selector).show(1000);
$(selector).fadeOut(10000);
})();
});
}
}
}
答案 0 :(得分:1)
我认为你需要添加clearInterval(timeupdater);在这种情况下
if(videotime !== oldTime) {
onProgress(videotime);
}
或循环将永远不会停止调用你的函数onProgress所以你应该尝试这个
if(videotime !== oldTime) {
clearInterval(timeupdater);
onProgress(videotime);
}
答案 1 :(得分:0)
我已经解决了这个问题。我添加了fadeOut回调函数来删除当前元素。