很抱歉,对某些人来说这可能是显而易见的,但有人可以向我解释为什么click事件调用的此函数不会将数组中的当前元素作为具有state属性的对象:' active& #39;,将其更改为null,然后获取数组中的下一个元素,也就是一个对象,并将其state属性更改为' active',而是抛出类似&#39的错误消息;不能设置属性' state'未定义'?
提前谢谢!
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';
}
});
});
答案 0 :(得分:0)
问题不在于它没有这样做,它确实这样做,但随后循环继续,现在下一个元素是“活动的”。它执行此操作直到最后一个元素抛出并出现错误,因为您正在尝试访问不在数组中的索引。
试试这个:
var i = null;
array.forEach(function(element, index, array) {
if(element.state === 'active') {
i = index;
}
});
if (i !== null && i + 1 < array.length) {
array[i].state = null;
array[i+1].state = 'active';
}