开发者问题收集

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

2017-10-20
7630

我尝试了很多解决方案,但都不起作用。我正在循环节点元素,我想转到最后一个,所以我更新了它。

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: Cannot set property 'innerHTML' of undefined.

2个回答

您不需要循环遍历元素来到达最后一个元素。

此外,您尝试获取 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');
}
Grégory Elhaimer
2017-10-20

您可以在此处不使用 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>
palaѕн
2017-10-20