2009-07-01 2 views
-3

aus irgendeinem kranken Grund, mein Scheck productIDs [addIndex] = allProductIDs [lastProductFoundIndex + i]; bewirkt, dass meine App in eine Endlosschleife spinnen:Versuch, Werte zu Array hinzuzufügen, bewirkt, dass App in eine Endlosschleife rotiert

numberOfImagesToDisplay bis 4

if (state == "next") 
{ 
    for(var a = 0; a < numberOfImagesToDisplay; a++) { 
     alert("a=" + a + ", numImages=" + numberOfImagesToDisplay) 

     if (a > 0) { addIndex = productIDs.length + 1; } 
     alert("I'm in GetNextProductIDs() 1"); 
     //var lastProductFoundIndex = $.inArray(lastProductID, allProductIDs); 
     //alert("I'm in GetNextProductIDs() 2"); 

     if (lastProductIndex >= 0) { 
      alert("I'm in GetNextProductIDs() 3"); 
      //productIDs[addIndex] = allProductIDs[lastProductFoundIndex + i]; 
     } 
    } 
} 

gesetzt Wenn ich diese Zeile herausnehmen, es geht weiter.

Aktualisierung: Gelöst. lastProductIndex wurde nicht definiert. Also, was passiert ist, dass es dort ankommen würde und die Schleife würde enden, aber es ist komisch, weil ein Callback wieder aufgerufen wurde, wenn es hätte enden sollen. Damit diese Callback-Methode diese Methode aufrufen würde und diese Methode an dieser Stelle enden würde, würde die Callback-Methode erneut aufgerufen, und Sie hätten eine Endlosschleife.

+0

Was meinen Sie mit "Spin in eine Endlosschleife"? Was macht es in einem Debugger? Geht es einfach nicht zurück? Ist es möglich, dass ein ungültiger Index die Funktion veranlasst, eine Ausnahme auszulösen? –

+0

Sie müssen mehr Code hinzufügen und die Fehler entfernen. Die for-Schleife funktioniert nicht einmal (initialisiert a, sondern inkrementiert i). lastProductIndex ist nirgendwo in diesem Snippet usw. definiert. –

+2

Sie haben eine Frage nach der anderen gestellt, um ein Problem zu lösen. Versuchen Sie, den gesamten Code zu posten, erklären Sie, was Sie tun möchten, damit es für alle Beteiligten einfacher ist. – SolutionYogi

Antwort

1

Das ist sehr seltsam. Alles, was ich denken kann ist, dass Sie eine onpropertychange Ereignisfeuerung haben, die auch i ändert. Major Longshot, ich weiß.

Was passiert, wenn Sie das Schlüsselwort var zu Ihrer for-Schleife hinzufügen? Das würde es in eine lokale Variable anstelle einer globalen Variablen verwandeln, so dass keine andere Funktion versehentlich Ihren Schleifenindex zerstören könnte.

for (var i = 0; i < numberOfImagesToDisplay; i++) 

Hinweis: Sie sollten die var gibt, ob oder nicht das ist das Problem.

Aktualisierung: Was zeigt alert("i="+i+", numImages="+numberOfImagesToDisplay) jede Iteration durch Ihre Schleife? Haben diese Variablen die erwarteten Werte?

Sind Sie sicher dieser Schleife ist fest? Vielleicht ist es eine andere Schleife. Könnte es sein, dass Sie wiederholt in diese Schleife zurückkehren und dadurch wiederholt Warnungen erhalten? Ich sehe nur nicht, wie diese Linie dazu führen könnte, dass diese Schleife zu einer Endlosschleife wird.

+0

var machte keinen Unterschied. Wenn ich diese Zeile wieder entferne, ist alles in Ordnung, und es gibt meine Funktion gut aus: productIDs [addIndex] = allProductIDs [lastProductFoundIndex + i]; – PositiveGuy

+0

komisch, ich bekomme jedes Mal 0 und 4. wtf – PositiveGuy

1

Ich sehe nicht Sie inkrementieren Variable a dort irgendwo, aber Sie erhöhen eine Variable i in Ihrer Schleife. a wird daher immer 0 -

for(var a = 0; a < numberOfImagesToDisplay; i++) 
+0

Ich hatte den ursprünglichen Beitrag aktualisiert ... soll ein sein, und a ist, was ich in meinem Code habe. Es tut uns leid. – PositiveGuy

1

Es ist nicht zu Ihrem vermutete Problem Linie verwandt ist, aber auf der Linie

for(var a = 0; a < numberOfImagesToDisplay; i++) 

Ihre Einstellung a = 0 und die Schleife während läuft ein < numberOfImagesToDisplay. Ich sehe nirgendwo, wo Sie inkrementieren oder ändern a, um die for-Schleife zu verlassen.

Verwandte Themen