0

我正在localStorage使用#id, #id+number of times div has been duplcated. 这样做的原因是我有一个按钮,它.clone()是 div 的次数与用户单击它的次数一样多,然后将克隆的 div 以及多少次保存到 localstorage。然而,我的问题是弄清楚如何将.clone()它返回到页面的次数与 localstorage 项目中的数值一样多。

例如,如果 localstorage 项目是这样的:(#one, #one-5),我希望 divone被克隆5到正文中。

到目前为止,我的代码可以在这里看到:

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

4

3 回答 3

3

您需要使用某种带有计数器的循环。for或者while将是完全足够的。

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

或者

var max = 5;
while(max--) {
    // clone here
}
于 2012-09-10T03:54:49.170 回答
2

将计数作为本地存储中的第二项不是更有意义吗?

(#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
}

多次复制和克隆元素也可能有用。一个小 jQuery 插件来抽象这个。

我不知道您如何将其存储在本地存储中,但您可以对对象进行字符串化并存储它们。

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

现在你可以得到它的属性,比如myobject.idand myobject.count

于 2012-09-10T03:57:13.193 回答
0

我会这样做:

http://jsfiddle.net/LShYs/

基本上,您只需添加一个循环:

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

并将您的点击事件提取到一个新方法(duplicateDiv),该方法现在从您的点击处理程序和循环中调用。很简单。

于 2012-09-10T04:22:48.690 回答