我在这里尝试了很多解决方案,但没有为我工作。我循环节点元素,我想到最后一个,所以我更新它。
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 :(得分: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');
}
答案 1 :(得分: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 )
&#13;
<div class="username">A</div>
<div class="username">B</div>
<div class="username">C</div>
&#13;