2012-12-05 29 views
2

On(document).ready im想動態生成某個父元素中的元素。讓我們稱他們爲「蠟燭」。如何添加索引到構造對象?

根據它們的索引(),每個「蠟燭」需要backgroundImage和顏色的不同屬性。

創建頁面後,需要通過界面更改這些屬性。所以保存「蠟燭」的屬性是非常重要的。

這就是爲什麼我認爲它可能是有用的,爲每個「蠟燭」生成一個對象來保存它們的各個屬性並使它們可編輯。

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)" ] 
    }; 

(請不介意代碼中的任何失誤除了 「蠟燭+ I」,我就看着辦吧。)

編輯:好的,謝謝你這麼遠。我可能不會讓自己清醒。 這裏是一個方式更加降低例如:

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

alert(candle4); 

我很想創造依賴於子對象的數量變量的數量。 什麼是正確的語法,或者不存在?

謝謝

+0

@see我的更新。如果您喜歡,Ps不會忘記標記爲答案或upvote。 – Andries

回答

0

那麼有沒有什麼辦法可以用索引生成對象名?

是的,在JavaScript中,全局變量被定義爲全局對象的屬性。 (在函數內部,變量被定義爲激活對象的屬性。)您可以通過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); 
+0

謝謝!我試圖將索引添加到變量名稱,但它不適用於我。我只是給我的帖子添加了一個更簡單的例子,也許你可以在那裏做你的魔法? – Kreativrandale

+0

現在的問題是,你從一個函數內分配你的變量。這使得變量是在激活對象中定義的,但只有在使用var時纔是如此。我會讓你的代碼工作,它有點解釋它。 – Andries

+0

好吧,那很好,謝謝! – Kreativrandale

1

只是把它們放在一個數組中,並通過索引訪問它們。結果很可能是相同的,並且比讓它們漂浮在你的範圍內要好得多