如何在数组末尾添加Object的副本?

时间:2013-09-11 21:27:16

标签: javascript

我如何在数组末尾添加第一个标记的副本,因为我理解push()不能在这种情况下使用...

<p>A</p>
<p>B</p>
<p>C</p>

<script>
var pArray=document.getElementsByTagName("p");
//now I would like to add pArray[0]
</script>

3 个答案:

答案 0 :(得分:2)

pArray实际上不是一个数组。这是一个NodeList。要将其转换为数组,只需调用Array.prototype.slice

var pArray = Array.prototype.slice.call(document.getElementsByTagName("p"));

答案 1 :(得分:2)

jsFiddle Demo

推送不可用,因为pArray实际上是NodeList MDN 。但是,只需分配到最后一个索引,就可以在不使用数组方法的情况下添加它。 cloneNode MDN 将为您复制第一个元素。

pArray[pArray.length] = pArray[0].cloneNode();

答案 2 :(得分:1)

如果要将第一个<p>标记的副本实际添加到DOM(而不是仅修改数组),则需要克隆节点并将其插入最后一个节点之后:

var els = document.getElementsByTagName('p');
var copy = els[0].cloneNode(true);
var last = els[els.length - 1];

last.parentNode.insertBefore(copy, last.nextSibling);