[js] Przypisanie zdarzenia onclick w pętli

[js] Przypisanie zdarzenia onclick w pętli
nediam
  • Rejestracja: dni
  • Ostatnio: dni
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 :(

Kopiuj
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 ;)

Loganek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 268
0

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

Kopiuj
	div.value=i;
        div.onclick = function() { jakasfunkcja( this.value ); }
bordeux
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Chorzów
  • Postów: 1130
0
Kopiuj
div.innerHTML = "costam " + i;
div.id =  i;
        div.onclick = function() { jakasfunkcja(this.id); }

//aj troche szybszy :D

nediam
  • Rejestracja: dni
  • Ostatnio: dni
0

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

  1. takie jak wasze ;)
Kopiuj
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.

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.