2017-01-14 3 views
0

var 'endTime'은 변경되지만 eventListener에서 업데이트되지 않습니다.eventListener 내에서 변경 변수 사용

vidposition0 = +$("[data-slide='0']").attr('data-time'); 
vidposition1 = +$("[data-slide='1']").attr('data-time'); 

navItem.off().on('click',function(){ 
    var navid = $(this).attr('data-slide'); 
    if (navid == 0) {playVideo(vidposition0);} 
    if (navid == 1) {playVideo(vidposition1);} 
}); 


function playVideo (endTime) { 
    video.play(); 
    video.addEventListener("timeupdate", function(){ 
    if(video.currentTime >= endTime) { 
     this.pause(); 
    } 
    }, false); 
} 

답변

1

endTime은 변수가 아니며 함수 매개 변수입니다. 그들은 로컬 함수 변수와 매우 유사하게 동작합니다. playVideo을 호출 할 때마다 복사본이 endTime이되며, playVideo이 호출 된 곳의 값과 playVideo에 대한 호출에 비공개입니다. playVideo의 내용은 업데이트되지 않으므로 변경되지 않습니다.

playVideo에 대한 특정 호출의 컨텍스트 외부에서 변경하려는 경우 playVideo (예 : 변경할 수 있음) 밖으로 이동해야합니다. 그러나 값을 업데이트하는 코드를 표시하지 않았거나 현재 수행중인 작업에 대한 설명이 없으므로 수정해야 할 부분에 대해 더 자세히 설명하기가 어렵습니다.

+0

클로저가 부족한 것처럼 보입니다. 아마 endtime의 복사본이 작동하여 playVideo (10) {'를 사용하여 vid의 처음 10 초를 재생할 수 있습니다. – mplungjan