Я пробовал много решений здесь, но не работал для меня. Я зацикливаю элементы узла, и я хочу перейти к последнему, поэтому я обновляю его.
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" неопределенного.
Вам не нужно перебирать элемент для достижения последнего.
Более того, вы пытаетесь получить 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');
}
Вы можете сделать это без использования 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>
event[event === (userLen - 1)]
?event === (userLen - 1)
имеет значениеtrue
илиfalse
(на самом деле это всегдаfalse
, посколькуevent
всегда будетHTMLElement
аuserLen - 1
всегда будет числом; что вы там сравниваете?), поэтому вы получаете доступevent[true]
илиevent[false]
, оба из которых будутundefined
. Это не имеет никакого смысла. Тем более, что вы пытаетесь получить доступ к некоторому индексу из одногоHTMLElement
.