Как добраться до последнего элемента в forEach () JS

1

Я пробовал много решений здесь, но не работал для меня. Я зацикливаю элементы узла, и я хочу перейти к последнему, поэтому я обновляю его.

app.js

var userLen = document.querySelectorAll('.username').length
document.querySelectorAll('.username').forEach(function (event) {
  event[event === (userLen - 1)].innerHTML =   window.localStorage.getItem('micky')
})

Я получаю эту ошибку каждый раз, когда Uncaught TypeError: Невозможно установить свойство "innerHTML" неопределенного.

  • 0
    Каким вы ожидаете event[event === (userLen - 1)] ? event === (userLen - 1) имеет значение true или false (на самом деле это всегда false , поскольку event всегда будет HTMLElement а userLen - 1 всегда будет числом; что вы там сравниваете?), поэтому вы получаете доступ event[true] или event[false] , оба из которых будут undefined . Это не имеет никакого смысла. Тем более, что вы пытаетесь получить доступ к некоторому индексу из одного HTMLElement .
Теги:
foreach

2 ответа

6
Лучший ответ

Вам не нужно перебирать элемент для достижения последнего.

Более того, вы пытаетесь получить event[true] или event[false] поскольку event === (userLen - 1) вернет логический, а не фактический индекс.

Попробуй это:

var nodeElememnts = document.querySelectorAll('.username');
if(nodeElements.length > 0){
    nodeElements[nodeElements.length - 1].innerHTML = window.localStorage.getItem('micky');
}
2

Вы можете сделать это без использования forEach здесь:

var elm = document.querySelectorAll('.username');
var lastElem = [].slice.call(elm).pop();
if (lastElem) lastElem.innerHTML = 'It Works!';

// For debugging purpose
console.log( [].slice.call(elm) ) //<-- Convert NodeList to Array
console.log( lastElem )
<div class="username">A</div>
<div class="username">B</div>
<div class="username">C</div>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню