Javascript 当某个条件为真时,清除setInterval时出现问题

Javascript 当某个条件为真时,清除setInterval时出现问题,javascript,jquery,dom-events,Javascript,Jquery,Dom Events,我正在使用YouTube iFrame API嵌入多个视频。我设置了一个时间间隔来获取视频的当前时间,并在视频被点击后关闭播放器。当满足此条件时,我会触发单击关闭图标,该图标应处理清除间隔和其他功能 当我在视频结束前关闭视频时,它会起作用。但是,当我在满足上述条件的情况下触发相同的功能时,间隔将不会清除/似乎会再次调用 代码: 当我在视频播放/暂停时单击“ytPlayerCloseBtn”时,它工作正常并清除间隔 当此点击由条件触发时(if(ytPlayerCurrentTime>ytplaye

我正在使用YouTube iFrame API嵌入多个视频。我设置了一个时间间隔来获取视频的当前时间,并在视频被点击后关闭播放器。当满足此条件时,我会触发单击关闭图标,该图标应处理清除间隔和其他功能

当我在视频结束前关闭视频时,它会起作用。但是,当我在满足上述条件的情况下触发相同的功能时,间隔将不会清除/似乎会再次调用

代码:

当我在视频播放/暂停时单击“
ytPlayerCloseBtn
”时,它工作正常并清除间隔

当此点击由条件触发时(
if(ytPlayerCurrentTime>ytplayercustomedtime).
)不会清除间隔。我的控制台日志继续运行


我已经尝试了很多不同的方法,但是我不明白为什么clearInterval在这种情况下不起作用

这是您的完整代码吗?@Luca这是代码的相关部分,不过我会用更多的代码更新我的问题。我们需要看看这些函数是如何调用的。例如,
closeThePlayerOverlay
只是将click事件的处理程序添加到特定元素中,因此它不会对UI进行任何更改…@HereticMonkey我添加了更多的代码!您在哪里声明
scriberUpdate
变量?
// Call on the YouTube iFrame API.
var tag = document.createElement('script');
tag.src = 'https://www.youtube.com/iframe_api';
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

var scrubberUpdate;

// Setup our player.
onYouTubeIframeAPIReady = function() {
    ytPlayer = new YT.Player(ytPlayerTarget, {
        width: '100%',
        playerVars: {
          'autohide': 1,
          'autoplay': 1,
          'cc_load_policy': 0,
          'controls': 1,
          'disablekb': 0,
          'end': 0,
          'wmode': 'transparent',
          'fs': 1,
          'loop': 0,
          'html5': 1,
          'playsinline': 1,
          'rel': 0,
        },
        events: {
          'onReady': onPlayerReady,
          'onStateChange': onPlayerStateChange
        }
      });
};

function closeFunc() {
    clearInterval(scrubberUpdate);
    ytPlayer.pauseVideo();
    ytPlayerCloseBtn.add(ytPlayerContainer).hide();
    ytPlayerWrapper.removeClass('playing').fadeOut();
}

function closeThePlayerOverlay() {
    ytPlayerCloseBtn.on('click', function() {
        closeFunc();
    });
}

function scrubberWidthCalc() {
    var ytPlayerDuration = ytPlayer.getDuration();
    var ytPlayerCustomEndTime = ytPlayerDuration - 0.2;
    var ytPlayerCurrentTime = ytPlayer.getCurrentTime();
    ytPlayerScrubber.css({
      'width': (ytPlayerCurrentTime / ytPlayerDuration) * 100 + '%'
    });
    if (ytPlayerCurrentTime > ytPlayerCustomEndTime) {
      ytPlayerCloseBtn.trigger('click');
    }
}

function scrubberWidth() {
    // console.log('scrubberUpdate');
    scrubberUpdate = setInterval(function() {
        scrubberWidthCalc();
    }, 10);
}

function loadVideo(theSource) {
    ytPlayer.loadVideoById(theSource, 0, 'default');
    ytPlayer.playVideo();
    scrubberWidth();
}

function triggerVideoPlayback() {
    ytPlayerTrigger.on('click', function() {
        var $this = $(this);
        var theSource = $this.data('yt-dynamic-src');
        handleInline($this);
        if (ytPlayerWrapper.hasClass('playing')) {
          ytPlayer.pauseVideo();
          loadVideo(theSource);
        } else {
          openThePlayerOverlay();
          loadVideo(theSource);
        }
      });
}

function onPlayerReady() {
    playPauseFun();
    closeThePlayerOverlay();
    handleFullscreen();
    triggerVideoPlayback();
}