代码之家  ›  专栏  ›  技术社区  ›  whispers

javascript+根据变量名和字符串构建动态变量名[重复]

  •  0
  • whispers  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我不清楚要执行以下操作的正确语法。

    • 我试过eval()我也试过[]和[]..

    我从这个开始:

    var player1InitStart = 0;
    var player2InitStart = 0;
    var player3InitStart = 0;
    var player4InitStart = 0;
    
    var playerID =  event.target.id; // will return, player1, 2, 3, 4
    

    在支票中使用,如:

    if(eval(playerID + "InitString") == 0){
        //do something, first time starting video
        eval(playerID + "InitString") = 1;
        alert('First Time Playing Video' + eval(playerID + "InitString"));
    }
    

    我尝试将playerid值与字符串“initstart”一起使用。

    然后我可以更新上面的目标xxinitstart变量。

    如何将var playerid与initstart字符串连接起来,以便现在可以针对playerxinitstart变量之一进行更新?

    更新:对我有效的答案/解决方案-

    • 不知道为什么要使用$字符?(让我想起了PHP)
    • 不知道为什么后面的记号 ' are there either? '

      var playerid=event.target.getiframe().id; var目标initid= ${playerID}InitStart ;

      //访问(get或set) 警报(window[targetinitid]); 窗口[TargetInitID]=1;

    1 回复  |  直到 6 年前
        1
  •  1
  •   Bibberty    6 年前

    var player1InitStart = 0;
    var player2InitStart = 0;
    var player3InitStart = 0;
    var player4InitStart = 0;
    
    //var playerID =  event.target.id; // will return, player1, 2, 3, 4
    
    document.querySelectorAll('div').forEach(div => {
      div.addEventListener('click', clickEvent);
    });
    
    function clickEvent(event) {
      let playerID = `${event.target.id}InitStart`;
      window[playerID] += 1;
      logVars();
    }
    
    function logVars() {
      console.log(player1InitStart);
      console.log(player2InitStart);
      console.log(player3InitStart);
      console.log(player4InitStart);
    }
    <div id="player1">1</div>
    <div id="player2">2</div>
    <div id="player3">3</div>
    <div id="player4">4</div>

    var players = {
      player1InitStart: 0,
      player2InitStart: 0,
      player3InitStart: 0,
      player4InitStart: 0
    };
    
    document.querySelectorAll('div').forEach(div => {
      div.addEventListener('click', clickEvent);
    });
    
    function clickEvent(event) {
      let playerID = `${event.target.id}InitStart`;
      players[playerID] += 1;
      logVars();
    }
    
    function logVars() {
      for(let k in players) {
        console.log(players[k]);
      }
    }
    <