trevoga_su
@trevoga_su

Как победитьэту проблему с замыканими?

имею почти аналог нижеприведенного кода.
<script>
var arr = [1, 2, 3];

for (var i in arr) {
	var p = document.createElement('p');
	p.appendChild(document.createTextNode('тут при клике должен быть текст с цифрой ' + (parseInt(i) + 1)));

	// вот тут затык - почему всегда последний элемент??
	p.onclick = function(){
		alert(arr[i])
	};
	
	document.body.appendChild(p);
}
</script>

как сделать так, что бы i-тое значение сохранялось в определенной onclick функции?

сохранять в data- значение arr[i] НЕ предлагать - работаю с canvas + raphael js
  • Вопрос задан
  • 204 просмотра
Решения вопроса 2
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
var arr = [1, 2, 3];

for (var i in arr) {
  (function(i, el){
    var p = document.createElement('p');
    p.appendChild(document.createTextNode('тут при клике должен быть текст с цифрой ' + (parseInt(i) + 1)));

    // вот тут затык - почему всегда последний элемент??
    p.onclick = function(){
      alert(el)
    };

    document.body.appendChild(p);
  })(i, arr[i]);
}


https://jsfiddle.net/DelphinPRO/Lvzzpvv2/
Ответ написан
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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