![](/img/trans.png)
[英]How to join elements of two different size arrays in javascript?
[英]How to join two arrays of html elements with JavaScript
我已经尝试了concat和push方法,但对我没有用。 那就是我想做的事:
var left = document.getElementById('main-left').children;
var right = document.getElementById('main-right').children;
var main = left.concat(right);
left = [<article class="content">…</article>, <article class="content">… </article>, <article class="content">…</article>]
right = [<article class="content">…</article>, <article class="content">… </article>, <article class="content">…</article>]
getElementById()永远不会返回数组,因此push和concat在'left'和'right'对象上将不可用。 您可以尝试这样的事情:
function logElementArray(){
var leftArray = document.getElementById('left').children;
var rightArray = document.getElementById('right').children;
var mainArray=[];
for(var i=0; i<rightArray.length; i++){
mainArray.push(rightArray[i]);
}
for(var i=0; i<leftArray.length; i++){
mainArray.push(leftArray[i]);
}
}
然后,您的“ mainArray”将具有所有元素。
您确实应该使用concat,但是像这样:
var left = document.getElementById('main-left').children;
var right = document.getElementById('main-right').children;
left = [].slice.call(left);
var main = left.concat.apply(left, right);
// or even var main = [].concat.apply([], [[].slice.call(left), [].slice.call(right)]);
left
不是Array实例,因此它没有诸如slice
或concat
类的Array.prototype方法,因此您需要使用call
。
或者,您当然可以简单地用于循环并在循环中填充新数组。
这是一个代码片段,用于将元素添加到数组,然后将数组中的元素添加到元素。
如果这是您尝试使用appendChild()可能更好的方法。
var a = document.getElementsByClassName("test"); var b = ""; for (var i = 0; i < a.length; i++) { b += a[i].outerHTML; console.log(a[i]); } var c = document.getElementById("main"); c.innerHTML = b;
.test { border: 5px solid cornflowerblue; height: 50px; } #main { border: 5px solid firebrick; }
<div class="test"></div> <div class="test"></div> <div id="main"></div>
首先看到left
和right
都没有在任何意义上的阵列。 您必须执行document.querySelectorAll
或document.getElementsByClassName
才能获取数组,然后可以应用数组之类的方法来将它们联接。 最优选使用:
// `a` into `b`:
for (var i=a.length-1; i >= 0; i--) {
b.unshift( a[i] );
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.