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 trial

JavaScript JavaScript and the DOM (Retiring) Making Changes to the DOM Appending Nodes

Dou Sun
Dou Sun
2,754 Points

Why can't I use the 'push' method??

so the last part I was trying to use the 'push' method like this, as the "ul" is an array.

my cold is like this:

addItemButton.addEventListener ('click', function(){ let ul = document.querySelectorAll('li'); let li = document.createElement('li'); li.textContent = addItemInput.value; ul.push(li); })

and in the console it keeps reminding me that "ul.push is not a function at HTMLButtonElement."

would anybody explain this to me pls?

1 Answer

Steven Parker
Steven Parker
231,269 Points

The function begins by creating the variable "ul" and setting it to a static NodeList representing a collection of all "li" elements in the document ("let ul = document.querySelectorAll('li')").

But then later it tries to use a "push" method ("ul.push(li)") on it. While static NodeLists are similar to arrays in some aspects, they do not have a "push" method and so this causes an error.

For more details, see the MDN page on NodeList.

Also, since the "ul" variable gets disposed immediately after this statement, it's not clear why this operation would be desired even if it did work.

Dou Sun
Dou Sun
2,754 Points

thank you very much!