无法在Javascript中控制appendChild()

无法在Javascript中控制appendChild(),javascript,append,Javascript,Append,我在使用Javascript拆分页面时遇到问题。我想把17个p标签移到一个div标签中。 我有34个p标签,如下所示: <p>1</p> <!-- Each p tag have the value is the number of the p tag --> 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 1 2 3 4 5 6 7 8 9 10 11 12

我在使用Javascript拆分页面时遇到问题。我想把17个p标签移到一个div标签中。 我有34个p标签,如下所示:

<p>1</p> <!-- Each p tag have the value is the number of the p tag -->
1

3

5

7

9

11

13

15

17

19

21

23

25

27

29

31

33
1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17
2, 3, 4
for(i=0;i<p.length;i++){
    var newNode = p[i].cloneNode(true);
    div.appendChild(newNode);
  }
这是演示:

同时,我希望div标签中的p标签如下所示:

<p>1</p> <!-- Each p tag have the value is the number of the p tag -->
1

3

5

7

9

11

13

15

17

19

21

23

25

27

29

31

33
1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17
2, 3, 4
for(i=0;i<p.length;i++){
    var newNode = p[i].cloneNode(true);
    div.appendChild(newNode);
  }
那么问题是什么呢?我怎样才能修好它? 非常感谢你

在div上创建appendChild时,它会删除p数组的元素。这将使这种情况只会发生。假设有4个p元素

1, 2, 3, 4
如果从p[0]生成appendChild,它将按预期移动p元素,但现在您的列表如下所示:

<p>1</p> <!-- Each p tag have the value is the number of the p tag -->
1

3

5

7

9

11

13

15

17

19

21

23

25

27

29

31

33
1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17
2, 3, 4
for(i=0;i<p.length;i++){
    var newNode = p[i].cloneNode(true);
    div.appendChild(newNode);
  }
您现在指向p[1],您希望它是元素2,但它将是元素3

要修复它,您可以始终指向p[0],它的行为将与您预期的一样。

在div上创建appendChild时,它会删除p数组的元素。这将使这种情况只会发生。假设有4个p元素

1, 2, 3, 4
如果从p[0]生成appendChild,它将按预期移动p元素,但现在您的列表如下所示:

<p>1</p> <!-- Each p tag have the value is the number of the p tag -->
1

3

5

7

9

11

13

15

17

19

21

23

25

27

29

31

33
1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17
2, 3, 4
for(i=0;i<p.length;i++){
    var newNode = p[i].cloneNode(true);
    div.appendChild(newNode);
  }
您现在指向p[1],您希望它是元素2,但它将是元素3


要修复它,您可以始终指向p[0],它将按照您的预期运行。

您的循环应该如下所示:

<p>1</p> <!-- Each p tag have the value is the number of the p tag -->
1

3

5

7

9

11

13

15

17

19

21

23

25

27

29

31

33
1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17
2, 3, 4
for(i=0;i<p.length;i++){
    var newNode = p[i].cloneNode(true);
    div.appendChild(newNode);
  }

您的循环应该如下所示:

<p>1</p> <!-- Each p tag have the value is the number of the p tag -->
1

3

5

7

9

11

13

15

17

19

21

23

25

27

29

31

33
1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17
2, 3, 4
for(i=0;i<p.length;i++){
    var newNode = p[i].cloneNode(true);
    div.appendChild(newNode);
  }

它们的顺序是否与向下或向上代码的顺序相同?它们的顺序是否与向下或向上代码的顺序相同?这是正确的,但实际上创建了p元素的副本。在循环中删除旧的p元素。p[i].parentNode.removeChildp[i]克隆一旦在循环中删除,旧问题就会再次出现,它们将从p数组中删除:Ohh yes。。。你又对了。。。只想去掉前17个哦!谢谢你!我不知道ClonenodeHTMLDOM。我会研究的。谢谢你!这是正确的,但实际上创建了p元素的副本。在循环中删除旧的p元素。p[i].parentNode.removeChildp[i]克隆一旦在循环中删除,旧问题就会再次出现,它们将从p数组中删除:Ohh yes。。。你又对了。。。只想去掉前17个哦!谢谢你!我不知道ClonenodeHTMLDOM。我会研究的。谢谢你!谢谢你!你的建议对我很有用!谢谢你!你的建议对我很有用!