[js] Przypisanie zdarzenia onclick w pętli

0

załóżmy że mam jakąś pętle w której tworze sobie diva, wypełniam go jakimś tam tekstem, przypisuje zdarzenie onclick i tu pojawia się problem załóżmy, że chce przekazać do funkcji aktualny "i"
czyli po kliknięciu w kolejnego diva powinienem wyskoczyć alert z aktualnym "i", niestety tak się nie dzieję ponieważ wyskakuje ostania pozycja "i" czyli w tym przypadku rozmiar tablicy :(

document.getElementById('jakisdiv');

for( var i = 0; i < tablica.length; i++)
{
	var div = document.createElement("div");
	div.innerText = "costam " + i;
	div.onclick = function() { jakasfunkcja( i ); }
	jakisdiv.appendChild(div);
}

function jakasfunkcja(i)
{
	alert(i);
}

Mam nadzieję że nie namieszałem za dużo ;)

0

nie wiem czy usatysfakcjonuje cię takie rozwiązanie, ale zawsze lepsze to niż nic(dodaj to do pętli;)):

	div.value=i;
        div.onclick = function() { jakasfunkcja( this.value ); }
0
div.innerHTML = "costam " + i;
div.id =  i;
        div.onclick = function() { jakasfunkcja(this.id); }

//aj troche szybszy :D

0

ok dzięki za szybką odpowiedź w międzyczasie znalazłem 2 rozwiązania

  1. takie jak wasze ;)
var x = new Function('jakasfunkcja(' + i + ');');
div.addEventListener('click', x ,false);
// lub 
div.onclick = x;

//edit
przed chwilą znalazłem trzecie rozwiązanie chyba najbardziej "profesjonalne":
3.

div.onclick = (function (a) {
	return function () {
		jakasfunkcja(a);
	};
})(i);

1 użytkowników online, w tym zalogowanych: 0, gości: 1