You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

动态修改变量名:点击按钮向对应标识的数组变量推入Hello

当然可行!

不过具体实现方式要根据你的变量作用域来调整,下面分两种常见场景给你说明:

场景1:数组变量在全局作用域

如果你的数组是直接声明在全局的(比如var x = []; var y = [];),可以通过window对象动态获取对应名字的数组,完成push操作:

// 先初始化全局数组
var x = [];
var y = [];

// 给所有目标按钮绑定点击事件
document.querySelectorAll('button').forEach(btn => {
  btn.addEventListener('click', function() {
    const targetArrayName = this.value;
    // 检查目标变量是否存在且是数组
    if (Array.isArray(window[targetArrayName])) {
      window[targetArrayName].push('Hello');
      console.log(`已把Hello推入${targetArrayName}数组:`, window[targetArrayName]);
    } else {
      console.warn(`找不到名为${targetArrayName}的数组变量`);
    }
  });
});

场景2:数组变量在局部作用域(更推荐)

如果数组是在函数等局部作用域里,直接通过字符串访问局部变量是行不通的,这时候更建议用一个对象来统一管理所有数组——既避免污染全局作用域,又能通过键名轻松定位目标数组:

function bindButtonActions() {
  // 用对象的键对应按钮的value值,值对应数组
  const arrayStore = {
    x: [],
    y: []
  };

  document.querySelectorAll('button').forEach(btn => {
    btn.addEventListener('click', function() {
      const key = this.value;
      if (arrayStore[key] && Array.isArray(arrayStore[key])) {
        arrayStore[key].push('Hello');
        console.log(`已把Hello推入${key}数组:`, arrayStore[key]);
      } else {
        console.warn(`未配置名为${key}的数组`);
      }
    });
  });
}

// 执行绑定逻辑
bindButtonActions();

小提醒

不管用哪种方式,都要确保目标数组已经被初始化,不然会触发未定义变量的错误。另外,用对象管理数组的方式更符合现代JS的编码规范,后续维护起来也更方便。

内容的提问来源于stack exchange,提问作者Toleo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:54:26