2017-10-20 63 views
1

我已經嘗試了很多解決方案,但沒有爲我工作。我正在循環節點元素,我想到最後一個,所以我更新它。如何到達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

回答

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

你可以做到這一點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>

相關問題