Get the last item from node list without using .length

Since NodeList doesn't have a pop method.

Using the spread syntax in a new array, then pop() to get the last element.

This basically copy the Nodelist as a regular array, thus the pop() and other array methods become available.

console.log(
  // Last elem with pop()
  [...document.querySelectorAll("div")].pop()
)

console.log(
  //  2nd elem
  [...document.querySelectorAll("div")].slice(1)[0]
)

console.log(
  // By index :) just in case
  document.querySelectorAll("div")[0]
)
<div>The sun</div>
<div>is</div>
<div>shinning</div>

depending on circumstances this may work: document.querySelector('#divConfirm table tr:last-of-type')


There's at least one way

var els = document.querySelectorAll('#divConfirm table')[1].querySelectorAll('tr');

var last = [].slice.call(els).pop();

but, the following statement

But if I do not know the length prior to running the script

makes no sense, you already have the collection of elements, so you would always know the length

var els = document.querySelectorAll('#divConfirm table')[1].querySelectorAll('tr');

var last = els[els.length - 1];

Another option as the8472's answer suggests would be

document.querySelector('#divConfirm table:nth-child(2) tr:last-child');

Tags:

Javascript