ugrás a tartalomhoz

Javascript timing

Matyas87 · 2010. Ápr. 29. (Cs), 13.24
Helló, 1 kockapoker progit próbálok csinálni, és a dobásnál szeretném ha "animációval" 1 secenként váltaná a képeket, így néz ki a kód:

function roll() {
	for (var i = 0 ; i<5 ; i++) {
		first_Roll(i);
	}
}

function first_Roll(thisDice) {
	var currDice = "dice" + thisDice;
	var t = setTimeout("document.getElementById(currDice).src = '_img/_dices/roll.jpg'",1000);
}
És vmiért nem müködik, azt irja ki a hibakonzolba h a currDice nincs definiálva, hogy lehetne ezt megoldani?köszi
 
1

Closure-ral

Török Gábor · 2010. Ápr. 29. (Cs), 13.44
A setTimeout-ban megadott kód nem a first_Roll hatókörében fog lefutni, így nem lesz hozzáférése a függvényben deklarált változóhoz. Más megfontolás miatt is szerencsésebb a setTimeout-nak névtelen függvénnyel átadni az időzítendó kódot. Valahogy így:

function first_Roll(thisDice) {
    var currDice = "dice" + thisDice;
    var t = setTimeout(function() {
            document.getElementById(currDice).src = '_img/_dices/roll.jpg'";
        }, 1000);

}
Így már a lexikális zárvány miatt hozzáfér a burkoló függvény változóihoz.
2

köszi szépen igy müködik!

Matyas87 · 2010. Ápr. 29. (Cs), 22.25
köszi szépen igy müködik!