2017-01-14 14 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

閉鎖の不足のように私に見えます。おそらく、エンドタイムの​​コピーが働くので、 'playVideo(10){'はvidの最初の10秒を再生することができます – mplungjan

関連する問題