Я хочу l oop через Элементы, которые были добавлены асинхронно с использованием fetch. Может кто-нибудь помочь? Вот что я попробовал:
Как я добавил элементы
const body = document.querySelector("body");
body.onload = function(){
//loads the list of subjects
getSubjects().then((data) => {
let subjectSrting = ""; //initialize variable that holds the html of all the subjects semester wise
// loops around each semester
data.forEach(function(semester){
subjectSrting += "<div class='semester'> <div class='title yearTitle'>"+ semester.year +"</div> <div class='title semesterTitle'>"+ semester.semester +"</div>";
// loops around each subject for each semester
semester.subjects.forEach(function (subject){
let dis = ""
if(subject.type != "C"){
dis = "disabledSub";
}
subjectSrting += "<div class='subject "+dis+"'> <div class='sub'><span class='code'>" + subject.code + "</span><span class='name'>" + subject.name + "</span></div> <div class='subCredits'>" + subject.cred + "</div> <div class='attempt'> <input type='checkbox' id='" + subject.code + "' checked><label for='" + subject.code + "'>1st</label> </div> <button type='button' data_gpv='-1' class='subResult'>SELECT</button> </div>";
});
subjectSrting += "</div>";
});
let form = document.querySelector(".home form");
form.innerHTML = subjectSrting;
})
}
Вот где я нахожу проблему с l oop вокруг элементов, чтобы получить значения data-gpv и посмотреть, флажки, которые были добавлены, отмечены или нет:
function calculateGpa(){
let subjects = document.getElementsByClassName("home")[0].getElementsByClassName('subject');
console.log(subjects.length); //logs 0, eventhough there are items in the HTMLCollection
console.log(subjects); //logs a an HTMLCollection[] with the elements in it
for(var i=0; i<subjects.length; i++){
// get the gpv values and see if the chechbox is checked
// cannot run this because subjects.length return 0
}
}
calculateGpa();