0

有没有办法创建一个变量,并在实际变量名的末尾添加一个 ID?

我有一个名为“gauge”的变量,用于创建一个新的 Gauge 对象:

var gauge = new Gauge(target).setOptions(opts);

我想为变量添加一个 ID,例如:

var gauge+id = new Gauge(target).setOptions(opts);

这是因为我正在创建许多这样的对象,并且每个对象都有一个特定的 ID,如果可能的话,我想将其附加到仪表对象上吗?

我所有的这个函数的代码都在下面,如果它能让你更好地了解我需要做什么:

    function go(id, votes)
{

var val = $('#votes_'+id).text();

var target = document.getElementById('foo_'+id); // your canvas element

var gauge = new Gauge(target).setOptions(opts); // create sexy gauge!
gauge.maxValue = 100; // set max gauge value
gauge.animationSpeed = 20; // set animation speed (32 is default value)
var a=votes+0.5;
gauge.set(val); // set actual value
}

我的主要问题出现在最后一行。它说gauge.set(val),它只设置最后一个对象,忽略所有其他对象......

4

3 回答 3

3

你可以做

window['gauge'+id] = new Gauge(target).setOptions(opts);

但通常最好使用数组或对象作为映射:

var gauges = {};
gauges[id] = new Gauge(target).setOptions(opts);
于 2012-11-24T16:46:07.810 回答
1

你为什么不只使用一个数组,像这样:

var gauge = []; //this needs be declared at global scope
gauge[id] = new Gauge(target).setOptions(opts);
于 2012-11-24T16:46:56.717 回答
1

您几乎没有可能的解决方案。

  1. 使用 eval() - 慢一
  2. 使用 key/val 数组 - 最佳解决方案
  3. 创建一个对象 - 也是不错的选择,但它需要一些规划

在您的情况下,选项 2 是最好的。

在这里您可以找到更多信息。

或者一个例子:

 var counter = 1;
 eval("var btn" + counter + "=123;");
 alert(btn1);
于 2012-11-24T16:50:27.350 回答