【问题标题】:JavaScript: Assign a value to a stringJavaScript:为字符串赋值
【发布时间】:2021-12-29 13:01:27
【问题描述】:

我有一个字符串数组,我想为每个字符串定义一个值。一个简单的例子是

varString = "Hello";
eval(varString + " = 9");
console.log(Hello);

我期望在Hello 中获得 9。这显然是有效的。但我想知道是否有更简洁的版本!

现在,您可能想知道我为什么要这样做!主要原因是我试图在我的 HTML 中为几个嵌入的 youtube 视频“setPlaybackRate”。

var player;
function onYouTubeIframeAPIReady() {
  for (let index = 0; index < IDYT.length; index++) {
    element = IDYT[index];
    object1 = Objects1(youtubeVideo[index], YTtime[index]);
    player = new YT.Player(element, object1);
  }
}

如您所见,player 在函数 onYouTubeIframeAPIReady() 之外定义,每个 Objects1 函数和 IDYT 定义如下

function Objects1(videoId1, startID1) {
  let object1 = {
    height: "315",
    width: "560",
    videoId: videoId1,
    playerVars: {
      autoplay: 0,
      loop: 1,
      start: startID1,
      // mute: 1,
    },
    events: {
      onStateChange: Test1,
    },
  };
  return object1;
}

let IDYT = ["player", "player1"];
let youtubeVideo = ["00vnln25HBg", "E-xMXv3L5L8"];
let YTtime = [20, 456];

但问题在于事件何时启动,即函数onPlayerStateChange由:

function onPlayerStateChange() {
  player.setPlaybackRate(1.5);
}

只有最后一个 youtube 视频的播放速率设置为 1.5,这是我没想到的。我认为这主要是只定义了最后一个player 变量。如果我能够执行一个将字符串更改为可能有帮助的变量的循环。如果您能给我有关如何解决此问题的指导,我将不胜感激。

非常感谢。

有用的链接:https://developers.google.com/youtube/iframe_api_reference

【问题讨论】:

    标签: javascript html youtube


    【解决方案1】:

    是的,您的直觉是正确的,只有最后一个玩家被更改,因为其他玩家被下一个玩家覆盖。

    一个非常简单的解决方案是维护一个players 数组。

    const players = [];
    function onYouTubeIframeAPIReady() {
      for (let index = 0; index < IDYT.length; index++) {
        element = IDYT[index];
        object1 = Objects1(youtubeVideo[index], YTtime[index]);
        players.push(new YT.Player(element, object1));
      }
    }
    
    // .....
    // ......
    
    function onPlayerStateChange() {
      players.forEach((player) => player.setPlaybackRate(1.5));
    }
    
    

    【讨论】:

      猜你喜欢
      • 2010-12-17
      • 1970-01-01
      • 1970-01-01
      • 2015-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      相关资源
      最近更新 更多