0

當前我正在使用youtube api iframe,並且我試圖在視頻結束時執行某些操作,但是,我需要JavaScript中的全局變量才能繼續。我的代碼是這樣的:在javascript中更新全局變量

var k =0 

function onYouTubeIframeAPIReady() 
     { 
      for(j=0;j<tam2;j++) 
     { 
      var nombre="player"+j; 
      player = new YT.Player(nombre, 
      { 
      height:'300', 
      width:'580', 
      videoId:arrayJS[j], 
      events: {'onStateChange': onPlayerStateChange} 
      }); 
     k++; 
     } 
     } 

所以我需要確定每個球員在我onPlayerStateChange功能,就是讓我的陣列arrayJS和arrayT的指數,以獲得特定的視頻正在生成的ID和標題成品事件,我試着做以下,但是當我運行CONSOLE.LOG它說,該變量沒有定義:

function onPlayerStateChange(event) 
    { 
     if (event.data == YT.PlayerState.ENDED) 
     { 
      console.log(k); 
      $.ajax 
      ({ 
       async:true, 
       type: "POST", 
       url:'v.php', 
       data: 
       { 
        idvideo:arrayJS[k], 
        titlevideo:arrayT[k] 
       }, 
       success:function envio(deVuelta) 
       { 
        alert(deVuelta); 
       }, 
       timeout:30000, 
       error:function() 
       { 
        alert("Ocurrio un error"); 
       } 
      }); 
     } 
    } 

回答

1

你有沒有嘗試bind

function onYouTubeIframeAPIReady() 
     { 
      for(j=0;j<tam2;j++) 
     { 
      var nombre="player"+j; 
      player = new YT.Player(nombre, 
      { 
      height:'300', 
      width:'580', 
      videoId:arrayJS[j], 
      events: {'onStateChange': onPlayerStateChange.bind(null, arrayJS, j)} 
      }); 
     k++; 
     } 
     } 

function onPlayerStateChange(ary, idx, event) 
    { 
     if (event.data == YT.PlayerState.ENDED) 
     { 
      console.log(k); 
      $.ajax 
      ({ 
       async:true, 
       type: "POST", 
       url:'v.php', 
       data: 
       { 
        idvideo:arrayJS[k], 
        titlevideo:arrayT[k] 
       }, 
       success:function envio(deVuelta) 
       { 
        alert(deVuelta); 
       }, 
       timeout:30000, 
       error:function() 
       { 
        alert("Ocurrio un error"); 
       } 
      }); 
     } 
    } 
+0

感謝您的回答。我的解決方案是簡單地將變量k的更新移動到bucle的開頭,並使用如下所示的變量:idvideo:arrayJS [k-1] – Mvram