如何到达forEach()的最后一个元素JS

问题描述:

我已经尝试了很多解决方案,但没有为我工作。我正在循环节点元素,我想到最后一个,所以我更新它。如何到达forEach()的最后一个元素JS

app.js 

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

我每次都会收到此错误未捕获的TypeError:无法设置属性'innerHTML'的undefined。

+0

你有什么期望'事件[事件===( userLen - 1)]'是? 'event ===(userLen - 1)'是'true'或'false'(实际上它总是'false',因为'event'总是一个'HTMLElement','userLen - 1'总是一个数字;你在比较什么?),所以你正在访问'event [true]'或'event [false]',这两者都是'undefined'。这没有意义。更不用说了,因为你试图从一个'HTMLElement'访问一些索引。 – Xufox

您不需要遍历元素以达到最后一个元素。

此外,您正试图获得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'); 
} 

你可以做到这一点W/O使用这里像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>