Globalne? Lokalne? Kakve su ovo varijable i kako se nositi sa njima?

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??

Evo jos dvije solucije:

for(var x=0;x<10;x++){
	var probaElement=creator({type:'div',parent:'test',html:'proba: '+x});
	probaElement.onclick=new Function('alert('+x+')');
}

for(var x=0;x<10;x++){
	var probaElement=creator({type:'div',parent:'test',html:'proba: '+x});
	(function(num){
		probaElement.onclick = function(){alert(num)}	
	})(x);
}

Copyright © 2022 WM Forum - AboutContact