dicem
@dicem

Почему arr[i] is undefined?

(function(w, d, u) { 
	"use strict"; 

	var arr = [
		{
			id: 1,
			name: 'John'
		},
		{
			id: 2,
			name: 'Peter'
		},
		{
			id: 3,
			name: 'Kate'
		}
	]; 

	for (var i = 0; i < arr.length; i++) {
		var div = d.createElement('div');
		console.log(i);
		div.addEventListener('click', function(){
			alert('Div number is ' + i + '. Name is: ' + arr[i].name);
		})
		div.style.cssText = 'width:30px;height:30px;border:1px solid red';
		d.body.appendChild(div); 
	} 
})(window, document, undefined)


Почему при клике на созданные дивы консоль пишет: arr[i] is undefined?
  • Вопрос задан
  • 242 просмотра
Решения вопроса 1
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
У вас к концу цикла i равна arr.length, а arr[arr.length] - не может существовать никогда.
Поменяйте
for (var i = 0; i < arr.length; i++) {
на
for (let i = 0; i < arr.length; i++) {
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@JorJeG
либо без ES6 синтаксиса
(function(i) {
  div.addEventListener('click', function(){
    alert('Div number is ' + i + '. Name is: ' + arr[i].name);
  });
})(i);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы