Situacija je sljedeća, zavrtimo petlju kroz neku listu recimo i prema svakom članu liste nešto stvaramo…
U najednostavnijem obliku bi to izgledalo ovako:
for(var x=0;x<10;x++)
{
var probaElement=creator({type:'div',parent:'test',html:'proba: '+x});
probaElement.onclick=function(){alert(x)};
}
…želimo da klikom na svaki element alerta se x koji je bio aktivan kad se pravio taj element. Problem je što se x izvrtio do broja 10, i kasnije koji god element kliknuli, alert uvijek kaže 10.
Osobno to rješavam ovako:
for(var x=0;x<10;x++)
{
var probaElement=creator({type:'div',parent:'test',html:'proba: '+x});
probaElement.x=x;
probaElement.onclick=function(){alert(this.x)};
}
Ovo mi prilično dobro funkcionira, ali isto tako mi često zna biti nepraktično. Koje su opće solucije i koji je po vama najbolji način??