作者luckynu (黑得发亮)
看板Ajax
标题[js]使用clone()复制DOM的疑问
时间Mon Feb 20 20:07:25 2017
先附上程式码
http://codepen.io/luckynu/pen/RKzyRL/?editors=1010
原本是要用clone()将DOM的资料一直堆叠下去
但是出现了一个问题,
只能复制一次,第二次後都不会执行复制的命令,
如果把复制出来的删除,就可以在一次复制,但还是不会超过2各
还请帮忙解答
感谢
--
^^ 生 木其 ㊣
● ▽ ⊙
女口 女口 ╭
┼╯
╰─┼─╯ 木其 ╱↘ 生
↙╰─╯
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 218.164.23.204
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Ajax/M.1487592449.A.837.html
1F:→ Kenqr: 复制的删除後 再按复制一样没反应喔 02/20 21:34
2F:→ Kenqr: 因为clone那行只执行了一次 第一次按是把复制品放到最後 02/20 21:35
3F:→ Kenqr: 第二次按就是把复制品拿出来又放回去了 02/20 21:35
4F:推 TETZ: first的结果是整个sel的element你是要复制第一个selectName 02/21 07:54
5F:→ TETZ: 吗?我用$("div.sel").children().eq(0).clone()然後把这个 02/21 07:55
6F:→ TETZ: 这个宣告放到click event里就可以了 02/21 07:55
我的想法是不要每次执行的时候再执行一次$("div.sel").first().clone();这个动作
所以才想要将这个资料存於全域资料理面
→
luckynu: 感谢两个大大回答,大概可以知道运作的结果,原理需要再 02/21 12:23
7F:→ luckynu: 研究一下。 02/21 12:23
8F:→ luckynu: 原本的想法是用clone()复制出来的Dom资料存储成全域资料 02/21 12:29
9F:→ luckynu: ,後续贴上的时候就不用再执行一次复制的动作,并且可以 02/21 12:29
10F:→ luckynu: 维持资料的初始值。 02/21 12:29
※ 编辑: luckynu (218.164.23.204), 02/21/2017 13:53:24
11F:推 TETZ: 应该是clone这个动作是跟createElement是一样把记忆体地址 02/22 03:49
12F:→ TETZ: 存在你assign的变数了所以要create新的元件的话就是要再 02/22 03:50
13F:→ TETZ: clone一次$("div.sel").last().after(clonedataaaa.clone()) 02/22 03:50
14F:→ TETZ: 个人解读是这样有错请其他大大开示 02/22 03:53
15F:→ serotw: 复制後在复制一次即可 02/22 08:51
17F:→ serotw: 解释一下,你的写法是复制一个物件,将该物件写进去,但你 02/22 13:14
18F:→ serotw: 设定的变数还是写进去那个物件,当你删掉该物件就无法在新 02/22 13:14
19F:→ serotw: 增是正常的,至於为何只能新增一个而已,因为设定的变数就 02/22 13:14
20F:→ serotw: 只是你复制的物件,当你执行新增第二次就只是重覆将该物 02/22 13:14
21F:→ serotw: 件写进去你要的地方。 02/22 13:14
22F:→ luckynu: 感谢楼上几位大大的解说,看来我对於js的基础有待加强。 02/25 16:14
23F:→ luckynu: 我原本的想法是认为该clone()的行为会直接回传DOM的资料 02/25 16:14
24F:→ luckynu: 放在变数里面,但结果应该只是存放function而已,这个应 02/25 16:14
25F:→ luckynu: 该是非严谨程式所造成的误解。感谢大大的解释。 02/25 16:14
27F:→ abcggg: 我的话会这样用 参考看看 02/28 02:10