2

How could I add a copy of the first tag at the end of an Array, since push() ,as I understand can't be used in this situation...

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

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

3 回答 3

2

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

var pArray = Array.prototype.slice.call(document.getElementsByTagName("p"));
于 2013-09-11T21:29:19.843 回答
2

jsFiddle Demo

Push 不可用,因为 pArray 实际上是一个 NodeList MDN。但是,您可以在不使用数组方法 push 的情况下通过简单地分配给最后一个索引来添加它。cloneNode MDN 将为您复制第一个元素。

pArray[pArray.length] = pArray[0].cloneNode();
于 2013-09-11T21:34:37.393 回答
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);
于 2013-09-11T21:49:15.033 回答