2

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

每个“蜡烛”需要不同的背景图像和颜色属性,具体取决于它们的 index()。

创建页面后,需要通过界面更改这些属性。因此,将“蜡烛”的属性彼此独立保存很重要。

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

    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);

我很想根据子对象的数量创建大量变量。什么是正确的语法,或者没有?

谢谢

4

2 回答 2

1

只需将它们放在一个数组中并通过索引访问它们。结果对您来说很可能是相同的,并且比让它们在您的范围内浮动要好得多

于 2012-12-05T15:12:56.807 回答
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);
于 2012-12-05T15:23:59.360 回答