BurnerR
Bot #0384479
- Registriert
- 20 Juli 2013
- Beiträge
- 5.509
Ich habe hier ein Problem mit JS, bzw. Jquery.
Ich erstelle in einer for-Schleife einen JQuery Queue bestehend aus Funktionen. Die Funktion erhält als Parameter Arrayelemente basierend auf den lokalen Zählvariablen.
Allerdings werden diese Parameter offenbar erst evaluiert, wenn die Funktion an sich ausgeführt wird:
[src=javascript]
for (var index = 0, len = spritearray.length; index < len; ++index) {
var theQueue = $({}); // jQuery on an empty object
var arraynumber = index;
func = function(next){ startSprite(arraynumber, next) }
theQueue.queue('test', func);
}
theQueue.dequeue('test'); // start queue
[/src]
In der Zeile
[src=javascript]func = function(next){ startSprite(arraynumber, next) }[/src]
Gewollt ist also ein Queue bestehend aus:
[src=javascript]
function(next){ startSprite(0, next) }
function(next){ startSprite(1, next) }
function(next){ startSprite(2, next) }
[/src]
Was ich aber erhalte ist:
[src=javascript]
function(next){ startSprite(2, next) }
function(next){ startSprite(2, next) }
function(next){ startSprite(2, next) }
[/src]
Wie kann ich das korrekt machen?
Analog dazu, wenn ich die Zeile
[src=javascript] var arraynumber = index;[/src]
weglasse, dann meldet er 'index is undefined', weil die laufvariable da dann wohl schon zerstört ist.
Wie kann ich JS also sagen, dass er dann später startSprite mit den Werten 0,1,2,..N aufrufen soll?
Ich erstelle in einer for-Schleife einen JQuery Queue bestehend aus Funktionen. Die Funktion erhält als Parameter Arrayelemente basierend auf den lokalen Zählvariablen.
Allerdings werden diese Parameter offenbar erst evaluiert, wenn die Funktion an sich ausgeführt wird:
[src=javascript]
for (var index = 0, len = spritearray.length; index < len; ++index) {
var theQueue = $({}); // jQuery on an empty object
var arraynumber = index;
func = function(next){ startSprite(arraynumber, next) }
theQueue.queue('test', func);
}
theQueue.dequeue('test'); // start queue
[/src]
In der Zeile
[src=javascript]func = function(next){ startSprite(arraynumber, next) }[/src]
Gewollt ist also ein Queue bestehend aus:
[src=javascript]
function(next){ startSprite(0, next) }
function(next){ startSprite(1, next) }
function(next){ startSprite(2, next) }
[/src]
Was ich aber erhalte ist:
[src=javascript]
function(next){ startSprite(2, next) }
function(next){ startSprite(2, next) }
function(next){ startSprite(2, next) }
[/src]
Wie kann ich das korrekt machen?
Analog dazu, wenn ich die Zeile
[src=javascript] var arraynumber = index;[/src]
weglasse, dann meldet er 'index is undefined', weil die laufvariable da dann wohl schon zerstört ist.
Wie kann ich JS also sagen, dass er dann später startSprite mit den Werten 0,1,2,..N aufrufen soll?