我如何在数组末尾添加第一个标记的副本,因为我理解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>
答案 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);