【发布时间】:2020-02-26 09:08:45
【问题描述】:
我正在创建一个脚本来重新排列页面上的<div> 元素。它可以将它们放入一个数组中,但该数组的内容如下所示:
[object HTMLDivElement],[object HTMLDivElement],[object HTMLDivElement],[object HTMLDivElement],
以下方法均无效:
my_array.innerHTML
my_array.outerHTML
my_array.html
my_array.toString()
那么我怎样才能让这个数组恢复成如下所示的样子:
<div class="rect red"></div><div class="rect green"></div><div class="rect blue"></div><div class="rect yellow"></div>,并将其呈现为页面上的 div 吗?
这里是完整的代码:
<!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>
【问题讨论】:
-
你必须在数组元素上调用
outerHTML,而不是数组。 -
@Barmar 谢谢。当我尝试
my_array[i].html或类似的东西(如外部和内部)时,我得到TypeError: my_array[i] is undefined我做错了什么? -
你需要发布你的代码。
-
@Barmar 完成。 :-)
标签: javascript html arrays dom