2012-09-10 44 views
0

我正在將項目設置爲localStorage,其語法爲#id, #id+number of times div has been duplcated。這是因爲我有一個按鈕,用戶點擊該按鈕的次數是多少次,然後保存哪些div被克隆,以及多少次存儲到本地存儲。但是,我的問題是要確定如何將.clone()返回頁面的次數與本地存儲項目中的數字值的次數相同。在jQuery中克隆次數?

例如,如果本地存儲項目是這樣的:(#one, #one-5),我希望div one克隆到身體5次。

我的代碼迄今可以在這裏看到:

http://jsfiddle.net/charlescarver/fLJcs/2/

回答

2

你需要使用某種循環的一個櫃檯。 forwhile就足夠了。

var max = 5; 
for (var i=0; i<max; i++) { 
    // clone here 
} 

var max = 5; 
while(max--) { 
    // clone here 
} 
+0

然後'all [0]'是元素的ID,'all [1]'是它被克隆的次數? – Charlie

+0

就是這樣的。不過,我同意@ sachleen的問題。 localStorage項目格式對我沒有任何意義。爲什麼不直接串入JSON?格式如'{「id」:「one」,「count」:5}'會做。除了'JSON.parse()'和'JSON.stringify()'之外,您不必編寫任何解析或序列化代碼。 –

+0

我相信我爲什麼使用當前語法來存儲數據的原因是我不確定如何將ID與數字分組,但是我意識到現在我可以將其設置爲一個變量:http:// jsfiddle .net/charlescarver/fLJcs/3/ – Charlie

2

那豈不是更有意義,只是算作在localStorage的第二個項目?

(#one, 5) 

不管怎樣,你要使用一個循環迭代n次(5在這種情況下),每次追加的元素。

喜歡的東西

// n is the number of times to clone (n=5 here) 
for (var i = 0; i < n; i++) { 
    // clone your element 
} 

Duplicate and Clone Elements Multiple Times也許是有用的,太。一個小抽象的jQuery插件。

我不知道如何將其存儲在localstorage中,但可以將它們存儲並存儲到stringify中。現在

myobject = { 
    'id': 'one', 
    'count': 5 
} 
// Save 
localStorage.setItem('myobject', JSON.stringify(myobject)); 
// Retrieve 
var myobject = JSON.parse(localStorage.getItem('myobject')); 

你可以得到它的屬性一樣myobject.idmyobject.count

+0

那麼'n'會是'all [1]'?關於你的第一點,我想是這樣。我試圖弄清楚爲什麼我現在擁有它。 – Charlie

+0

我不知道'all [1]'是什麼。不過,你可以從##5中獲得5分。 – sachleen

+0

這是我如何讓我的代碼安裝在小提琴中...... – Charlie

0

我會這樣做:

http://jsfiddle.net/LShYs/

基本上,你只需添加一個循環:

for (var i=0; i< parseInt(all[1])-1; i++){ 
    duplicateDiv("#" + all[0]); 
}     

,並提取您的點擊事件到一個新的方法(duplicateDiv)現在從您的單擊處理和循環調用。非常簡單。