I thought the code below would do it but it gives me an “TypeError: Cannot read property ‘0’ of undefined”. how can get my data to display? I’m still new to javascript, please keep it simple and easy to understand.
// Get todos Function
function getToDos() {
// Get request
axios
.get("//https:www.apiCall")
.then((res) => {
// log response
console.log(res);
// user creates todos variable
if (res.length === 0) {
console.log("No to-dos addded");
}
const todos = res.data;
displayToDos(todos);
})
.catch((err) => {
console.log(err);
});
}
// display todos function
function displayToDos(todos) {
if (todos.length === 0) {
// Create ul element
const ul = document.createElement("ul");
}
let li = document.createElement("li");
li.setAttribute("class", "toDoItem");
for (let i = 0; i < todos.length; i++) {
// adds text to li element
let textContent = document.createTextNode("Title: " + todos[i].title);
// Append content to li
document.li[i].appendChild("textContent");
document.ul.appendChild(li[i]);
document.body.appendChild(ul);
}
}
getToDos();
Advertisement
Answer
You have lots of errors in your displayToDos method. It should look something like this:
function displayToDos(todos) {
// You have to create an ul element, not only when there are 0 todos.
const ul = document.createElement("ul");
for (let i = 0; i < todos.length; i++) {
// You need to create an li for each todo
let li = document.createElement("li");
li.setAttribute("class", "toDoItem");
let textContent = document.createTextNode("Title: " + todos[i].title);
li.appendChild(textContent);
// And add it to the ul
ul.appendChild(li);
}
// Finally, add the ul to your html page.
document.body.appendChild(ul);
}