Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialAnthony Sabberton
4,864 PointsAnother way of inserting the Li as a child element of the UL
Hi everyone,
In another JavaScript Course, Guil explains another method of inserting html.
I understand using the .appendChild() method but is there any reason why you couldn't do the same with .insertAdjacentHTML("beforeend", 'li') ?
Cheers,
Tony
3 Answers
Steven Parker
231,269 PointsThe "insertAdjacentHTML" method requires complete HTML for the second argument, so the correct syntax a single substitute statement would be:
ul.insertAdjacentHTML("beforeend", li.outerHTML);
But this leaves the newly created element unattached. A better approach wold be to skip the create statement entirely and do this:
ul.insertAdjacentHTML("beforeend", `<li>${addItemInput.value}</li>`);
This is also a newer method so it may not have as much browser support. But if you don't mind using "bleeding edge" tech, an even newer substitute for "appendChild" is simply "append", which does attach the element in the same way.
Danny L.
10,837 PointsI also did it another way. I gave my <ul> an ide of #unordered and assigned it to a variable called list
const list = document.querySelector("#unordered");
I then wrote the function like this:
addItemButton.addEventListener("click", () => {
let li = document.createElement("li");
let item = li.textContent = addItemInput.value;
list.innerHTML += `<li>${item}</li>`;
addItemInput.value = "";
});
Just a suggestion :)
Steven Parker
231,269 PointsSince the textContent gets wiped out when you assign the innerHTML (which is a difference from the other methods shown), you can simplify that assignment of "item":
let item = addItemInput.value;
This also avoids having two assignments in the same statement, which can be a bit confusing.
Danny L.
10,837 PointsOh cool thanks Steven!