【问题标题】:Create a variable which is named depending on an ID number?创建一个根据 ID 号命名的变量?
【发布时间】:2012-11-24 16:44:38
【问题描述】:

有没有办法创建一个变量,并在实际变量名的末尾添加一个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),它只设置最后一个对象,忽略所有其他对象...

【问题讨论】:

    标签: javascript jquery variables


    【解决方案1】:

    你可以的

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

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

    var gauges = {};
    gauges[id] = new Gauge(target).setOptions(opts);
    

    【讨论】:

      【解决方案2】:

      你为什么不直接使用数组,像这样:

      var gauge = []; //this needs be declared at global scope
      gauge[id] = new Gauge(target).setOptions(opts);
      

      【讨论】:

      • 这似乎在 netbeans 中给了我一个错误:missing ; before语句..看不到它缺少的地方;
      • 谢谢,它确实有效,但我仍然遇到同样的问题,该函数只更新最后一个元素
      • 记得把var gauge = [];放在全局范围内,也就是在你的函数之外,在你的js文件的根目录下。
      • 它有点工作 - 我尝试设置每个仪表,只有最后一个设置..例如我这样设置:gauge[3].set(20); ...它适用于最后一个,也许所有其他量表的创建方式有问题
      • 好的,我现在知道了,它确实可以工作,但仪表有点问题......感谢您的帮助
      【解决方案3】:

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

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

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

      Here你可以找到更多信息。

      或者一个例子:

       var counter = 1;
       eval("var btn" + counter + "=123;");
       alert(btn1);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多