-2

I have an array with 2 elements, and I want to append each element to each div.

let numbers = ['1', '2'];
var appendDiv = document.getElementsByClassName('append-div');

var addBtn = document.querySelector('.add-btn');
addBtn.addEventListener('click', function() {
    // Here goes the code
});
<div class="append-div"></div>
<div class="append-div"></div>

<button class="add-btn">Add to Div</button>
Tanner Dolby
  • 4,253
  • 3
  • 10
  • 21
dududornelees
  • 177
  • 3
  • 13

2 Answers2

1

Maybe this is the output you are looking for.

let numbers = ['1', '2'];
var appendDiv = document.querySelectorAll('.append-div');

var addBtn = document.querySelector('.add-btn');
addBtn.addEventListener('click', function() {
    appendDiv.forEach((item,i) =>{
        if(i < numbers.length){
            item.innerText = numbers[i]
        }
    })
  console.log(appendDiv,"appendDiv")
});
M.Hassan Nasir
  • 851
  • 2
  • 13
1

You can use a for loop to iterate over the HTMLCollection appendDiv and string array numbers. Then assign each .append-div elements textContent with the values from your string array.

let numbers = ['1', '2'];
var appendDiv = document.getElementsByClassName('append-div');

var addBtn = document.querySelector('.add-btn');
addBtn.addEventListener('click', function() {
    for (var i = 0; i < appendDiv.length; i++) {
      appendDiv[i].textContent = numbers[i];
    }
});
<div class="append-div"></div>
<div class="append-div"></div>

<button class="add-btn">Add to Div</button>

Or use the more modern Array.prototype.forEach(). But keep in mind, getElementsByClassName returns a live HTMLCollection which doesn't have access to Array methods like forEach. Therefore, you must convert the HTMLCollection to an Array using the spread operator and brackets like [...HTMLCollection].

let numbers = ['1', '2'];
var appendDiv = [...document.getElementsByClassName('append-div')];

var addBtn = document.querySelector('.add-btn');
addBtn.addEventListener('click', function() {
    appendDiv.forEach((element, index) => {
      element.textContent = numbers[index];
    });
});
<div class="append-div"></div>
<div class="append-div"></div>

<button class="add-btn">Add to Div</button>
Tanner Dolby
  • 4,253
  • 3
  • 10
  • 21