I am creating a script to rearrange <div> elements on a page. It can get them into an array, but that array's contents look like:
[object HTMLDivElement],[object HTMLDivElement],[object HTMLDivElement],[object HTMLDivElement],
None of the following have worked:
my_array.innerHTML
my_array.outerHTML
my_array.html
my_array.toString()
So how can I get this array back into something that looks like: <div class="rect red"></div><div class="rect green"></div><div class="rect blue"></div><div class="rect yellow"></div>, and have that render as divs on the page?
Here is the full code:
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <style> .rect {width:24px; height:12px; border-radius:12px; border:4px solid rgba(0,0,0,0.25); margin-bottom:12px} .red {background-color:#c21} .green {background-color:#1c3} .blue {background-color:#28f} .yellow {background-color:#ed1} </style> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script> </head> <body> <div id="target"> <div class="rect red"></div> <div class="rect green"></div> <div class="rect blue"></div> <div class="rect yellow"></div> </div> <script> function move_before(arr, ndx){ //move the element one place earlier in the array var move = arr[ndx]; arr.splice(ndx, 1); //from index #'ndx', remove 1 element arr.splice(ndx-1, 0, move); //from the index before #'ndx', remove 0 elements, then insert the value of 'move' } $(".rect").click( function() { // rearrange the order of divs when one is clicked var sort = Array.from( $(this).parent().children() ); var current_index = $(this).index(); move_before(sort, current_index); // put each element into a new array var i = 0; var updated_arr = []; while (i <= sort.length) { updated_arr.push(sort[i]); i = i+1; } document.getElementById("target").innerHTML = updated_arr; }); </script> </body> </html>
outerHTMLon the array elements, not the array.my_array[i].htmlor similar things (like outer and inner) I getTypeError: my_array[i] is undefinedWhat am I doing wrong?