對不起,這可能是顯而易見的,但有人請向我解釋爲什麼這個由click事件調用的函數沒有帶有屬性對象的數組中的當前元素state:'active',將它改爲null,然後獲取數組中的下一個元素,也就是對象,並將其狀態屬性更改爲'active',但是會拋出錯誤消息,如'Can not set property' '未定義'的狀態?JavaScript的forEach數組方法不改變對象的屬性
提前謝謝!
var array = [{
state : 'active'
}, {
state : null
}, {
state : null
}];
document.addEventListener('click', function() {
array.forEach(function(element, index, array) {
if(element.state === 'active') {
element.state = null;
array[index+1].state = 'active';
}
});
});
,索引將爲array.length -1 ...陣列[索引+ 1],這是陣列[array.length],將未定義的,因此沒有財產狀態 –
^Jaromanda是正確的。只要Array中的最後一個Object是活動的,你的'index + 1'就會越界,你會看到'undefined'錯誤。您將需要重新處理您的邏輯以適當地處理數組中的最後一個元素(向後移動一個,返回到開始處,任何適合您的應用程序的位置)。 – erictgrubaugh
ahh ok ...看到我認爲第二個元素的狀態值會改變,然後錯誤會被拋出,但我明白了爲什麼現在。謝謝! – Nalyd