【问题标题】:javascript - how to combine a static value and a dynamic value to get the value of an existing stringjavascript - 如何结合静态值和动态值来获取现有字符串的值
【发布时间】:2011-01-28 04:37:44
【问题描述】:
var a_0, a_1, a_2 = 0;

function onclick( id ) { 
   // id is either 0,1 or 2

   // echos 'a_0', 'a_1' or 'a_2', but I need it to echo "0".
   alert( 'a_' + id ); 
}

我做错了什么?

【问题讨论】:

  • 我也试过alert(a_+id),它说“a_”没有定义。

标签: javascript string concatenation


【解决方案1】:

不要将a_0a_1a_2声明为全局变量,而是将它们放在一个对象中:

var a_x = {
    a_0: 0,
    a_1: 0,
    a_2: 0
}

然后您可以像这样访问这些属性:a_x["a_" + id]

【讨论】:

  • @nybbler 我实际上认为这是一个缺点。我仍然有这种唠叨的感觉,with 也可以以某种方式使用。
  • 我想我看错了...您认为 not 使用 eval 是一个缺点吗?无需使用with(你会怎么做?)或使一个好的解决方案复杂化。
【解决方案2】:

不要将变量命名为 a_0、a_1 等,而是使用数组

var a=[];
a[0]=a[1]=a[2]=0;

function onclick(id){
  alert(a[id]);
}

【讨论】:

  • 我只是打出来的,因为这不是我的实际代码,但感谢您的输入。
【解决方案3】:

你需要使用 eval()

alert(eval('a_'+id));

eval() 通常不被推荐,但这取决于你想要达到的目标。

【讨论】:

  • eval() 正是我想要的。感谢您花时间回答我的问题。
【解决方案4】:

如果您信任事件源,您可以这样做:

alert(eval('a_'+id))

【讨论】:

  • 记住:eval 是邪恶的。另外,如何相信 onclick 事件源不会被篡改?
  • 如果网站没有表单输入,我会相信它。
猜你喜欢
  • 2018-08-26
  • 1970-01-01
  • 1970-01-01
  • 2014-08-16
  • 1970-01-01
  • 1970-01-01
  • 2019-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多