Подтвердить что ты не робот

Как добавить массив дочерних узлов к родительскому node за одну операцию с помощью JavaScript?

В JavaScript есть способ добавить массив дочерних узлов к родительскому node за одну операцию?

Я хочу сделать это за одну операцию, чтобы предотвратить ненужные рецензии.

Я пробовал родительский .appendChild(arrayOfNodes), но это дает исключение.

Я создаю небольшой компонент, который будет повторно использоваться в нескольких проектах, я не хочу зависеть от какой-либо библиотеки, такой как jQuery или Zepto.

4b9b3361

Ответ 1

Вы можете использовать промежуточный DocumentFragment, который немного запутан, но, скорее всего, будет работать лучше, чем делать его node за раз, если вы добавляете вновь созданные узлы к существующему node в пределах документ:

var frag = document.createDocumentFragment();
for (var i = 0; i < arrayOfNodes.length; ++i) {
    frag.appendChild(arrayOfNodes[i]);
}
someElement.appendChild(frag);

Ответ 2

Вы можете добавить метод Node, который вызывает метод appendChild внутри:

(function () {
  Node.prototype.appendChildren(arrayOfNodes) {
    var length = arrayOfNodes.length;
    for (var i = 0; i < length; i++) {
      this.appendChild(arrayOfNodes[i]);
    }
  }());

Что тогда можно было бы использовать так:

node.appendChildren(arrayOfNodes)

Ответ 3

Я знаю, что это своего рода старый, но у меня был аналогичный вопрос. Я решил написать простую функцию, которая берет родительский (node) и дочерние узлы (nodeList или массив узлов), не распространяя каких-либо прототипов или делая их более сложными, чем я думал, что это должно быть...

 function appendChildren(parent, children) {
     for (var i=0; i<children.length;i++) {
         child = children[i];
         parent.appendChild(child);
     }
     return parent;
 }