Reputation: 498
I am stuck in a problem where I have to re-arrange div's inside a div.
This html is in ajax response. There are accordions inside div with IDs like accordion 0 accordion 1 ,.... accordion 4.
How can I re-arrange these divs using javascript?
function GetHtmlUsingAjax() {
fetch(url)
.then((response) => {
return response.text();
})
.then((result) => { // result here contains the html given above
//how can i re-arrange their order using javascript as div0,1,2,3..
});
}
<div id="maindiv">
<div id="sudiv0">
<div id="accordion0">
</div>
</div>
<div id="sudiv2">
<div id="accordion2">
</div>
</div>
<div id="sudiv1">
<div id="accordion1">
</div>
</div>
<div id="sudiv3">
<div id="accordion3">
</div>
</div>
</div>
Upvotes: 0
Views: 121
Reputation: 177940
Like this
PS DIVs do not have values
const container = document.getElementById("container"); // or use a fragment
// container.innerHTML = response.text();
// demo string, remove when using the response
container.innerHTML = `<div id="maindiv">
<div id="sudiv0">
<div id="accordion0">accordion 0</div>
</div>
<div id="sudiv2">
<div id="accordion2">accordion 2</div>
</div>
<div id="sudiv1">
<div id="accordion1">accordion 1</div>
</div>
<div id="sudiv3">
<div id="accordion3">accordion 3</div>
</div>
</div>`
const main = document.getElementById("maindiv");
[...document.querySelectorAll("[id^=sudiv]")]
.sort((a,b) => a.id.replace("sudiv","") - b.id.replace("sudiv",""))
.forEach(div => main.appendChild(div))
<div id="container"></div>
Upvotes: 1