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