I created a javaScript that calls JSON data, loops through the JSON data and appends it to various divs using class names. It works good so far but it seems like I'm doing it the long way. I'm using innerHTML qual[0].innerHTML += data[0].size; manually to display multiple JSON elements. In my JSON file, I know that there are 8 elements using the name "test" but the amount (test) could change. Is there a way to loop through the JSON elements and display them via class name instead of manually writing qual[0].innerHTML += data[0].size; qual[1].innerHTML += data[1].size;... ?
fetch('test.json')
.then(function (response) {
return response.json();
})
.then(function (data) {
appendData(data);
})
.catch(function (err) {
console.log('error: ' + err);
});
function appendData(data) {
var mainContainer = document.getElementById("List");
for (var i = 0; i < data.length; i++) {
var qual = document.getElementsByClassName('Size')
qual[0].innerHTML += data[0].size;
qual[1].innerHTML += data[1].size;
qual[2].innerHTML += data[2].size;
qual[3].innerHTML += data[3].size;
qual[4].innerHTML += data[4].size;
qual[5].innerHTML += data[5].size;
qual[6].innerHTML += data[6].size;
qual[7].innerHTML += data[7].size;
mainContainer.appendChild(div);
}
}
The HTML
<h1>List</h1>
<div class="size"></div>
<div class="size"></div>
<div class="size"></div>
<div class="size"></div>
<div class="size"></div>
<div class="size"></div>
<div class="size"></div>
The JSON
[
{
"test":"Test Data",
"size":12
},
{
"test":"Test Data",
"size":5
},
{
"test":"Pasta",
"size":1
},
{
"size":3
},
{
"test":"Test Data",
"size":8
},
{
"test":"Test Data",
"size":9
},
{
"test":"Test Data",
"size":9
},
{
"test":"Test Data",
"size":5
}
]
I would like the dive to populate like the following:
<div class="size"> 1 </div>
<div class="size"> 2 </div>
<div class="size"> 3 </div>
<div class="size"> 4 </div>
<div class="size"> 5 </div>
<div class="size"> 6 </div>
<div class="size"> 7 </div>