在javascript中更新全局变量

时间:2016-12-17 16:14:25

标签: javascript function youtube-api global-variables youtube-iframe-api

目前我正在使用youtube api iframe,我尝试在视频结束时做点什么,但是,我需要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和title,我试着做以下,但是当我运行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 个答案:

答案 0 :(得分: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");
                }
            });
        }
  }