Вместо работы с HTML, рассмотрите возможность манипулирования узлами DOM. Это более чистое и надежное решение, поскольку HTML может быть сложным в управлении. Вот как вы можете сделать это, используя DOM API для клонирования узлов и добавления их к новому родительскому элементу:
var shortReviews = [];
var elm = document.getElementsByClassName('reviewContainer');
for (var i = 0; i < elm.length; i++) {
//create a copy of the nodes
shortReviews.push(elm[i].cloneNode(true));
}
var newContainer = document.querySelector("#reviewsSnap");
shortReviews
.slice(0, 2) //take the first two
.forEach(el => newContainer.appendChild(el)); //add them to the new container
.reviewContainer {
border: 1px solid red;
}
#reviewsSnap .reviewContainer {
border: 1px solid blue;
}
<div class="reviewContainer">
<h3>short review 1</h3>
<p>very short review: good</p>
</div>
<div class="reviewContainer">
<h3>short review 2</h3>
<p>very short review: average</p>
</div>
<div class="reviewContainer">
<h3>short review 3</h3>
<p>very short review: bad</p>
</div>
<div id="reviewsSnap">
<h1>Chosen reviews</h1>
</div>
Если вы хотите переместить узлы, вместо двух копий, вы можете просто отбросить шаг клонирования,Каждый узел может иметь только одного родителя, поэтому, если вы добавите его в новый, он будет удален из первого родителя:
var shortReviews = [];
var elm = document.getElementsByClassName('reviewContainer');
for (var i = 0; i < elm.length; i++) {
//don't copy, take the actual nodes
shortReviews.push(elm[i]);
}
var newContainer = document.querySelector("#reviewsSnap");
shortReviews
.slice(0, 2) //take the first two
.forEach(el => newContainer.appendChild(el)); //add them to the new container
.reviewContainer {
border: 1px solid red;
}
#reviewsSnap .reviewContainer {
border: 1px solid blue;
}
<div class="reviewContainer">
<h3>short review 1</h3>
<p>very short review: good</p>
</div>
<div class="reviewContainer">
<h3>short review 2</h3>
<p>very short review: average</p>
</div>
<div class="reviewContainer">
<h3>short review 3</h3>
<p>very short review: bad</p>
</div>
<div id="reviewsSnap">
<h1>Chosen reviews</h1>
</div>