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);
我希望根据子对象的数量创建一些变量。 什么是正确的语法,或者没有?
谢谢
答案 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);