【问题标题】:Updating global variables in javascript在javascript中更新全局变量
【发布时间】:2016-12-17 16:14:24
【问题描述】:

目前我正在使用 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 和标题,我尝试执行以下操作,但是当我运行 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");
                }
            });
        }
  }  

【问题讨论】:

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


    【解决方案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");
                    }
                });
            }
      }  
    

    【讨论】:

    • 感谢您的回答。我的解决方案是简单地将变量 k 的更新移动到 bucle 的开头并使用如下变量:idvideo:arrayJS[k-1]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多