如何为构造对象添加索引?

时间:2012-12-05 15:10:46

标签: javascript

On(document).ready im想在某个父元素中动态生成元素。让我们称他们为“蜡烛”。

每个“Candle”需要backgroundImage和color的不同属性,具体取决于它们的索引()。

创建页面后,这些属性需要通过界面进行更改。因此,保存“蜡烛”的属性非常重要。

这就是为什么我认为为每个“Candle”生成一个对象来保存它们各自的属性并使它们可编辑可能有用。

    var candleAmount = 3;
for (var i=1; i <= candleAmount; i++) {
    $("#container #candles").append("<li><img src=''></img></li>");
    var Candle+i = [ "background":"+i+", "color":" - random - (ignore)" ]
    };

(请注意除了“Candle + i”之外的代码中的任何失败,我都会弄明白。)

编辑:好的,谢谢你们。我可能不会让自己明白。 这是一个更简化的例子:

$("ul#candles li").each( function(i) {
  candle+i = i+" Anything";
  });

alert(candle4);

我希望根据子对象的数量创建一些变量。 什么是正确的语法,或者没有?

谢谢

2 个答案:

答案 0 :(得分:1)

将它们放入数组并通过索引访问它们。结果很可能与您相同,并且比让它们漂浮在您的范围内要好得多

答案 1 :(得分:0)

  

有没有办法生成带索引的对象名?

是的,在JavaScript中,全局变量被定义为全局对象的属性。 (在函数内部,变量被定义为Activation对象的属性。)您可以通过window(对于浏览器应用程序)或仅this引用全局对象。

因为所有对象都是关联的,所以你可以给那些属性提供你想要的名字。因此,设置全局变量等于将属性设置为全局对象。

var foo = "bar"; === this["foo"] = "bar";

现在,只需向名称添加动态部分只需一小步:

for(var i=0;i<10;i++) {
 this['candle' + i] = i;  
}

alert(candle7);

针对您的具体代码:

$("ul#candles li").each( function(i) {
  window["candle" + i] = i+" Anything";
  });

alert(candle4);