Wert in Schleife wird überschrieben

deep_popel

Mitglied
Hi,

ich könnte verzweifeln. Ich glaub ich bin zu blöd dafür. Ich probiere hin und her und es will einfach nicht funktionieren. Und ich geh sogar davon aus, das es sich nur um einen sehr kleinen Fehler handelt.
Folgendes, mit der For-Schleife lass ich eine onRelease-Funktion für jeden Button generieren. So...nur in der Funktion wird der Wert immer überschrieben und dann ist halt bei jedem Button immer nur der letzte Wert.
Ach und zweitens, wie zähle ich diesen Array (cor.length geht ja bei den net)?

PHP:
cor = {cor0:"#ff0000", cor1:"#0000ff", cor2:"#ffffff"};
for (var i = 0; i<3; i++) {
        farb_btn = eval("cor"+i); //Buttonname
        farbe = cor["cor"+i]; //Farbname

        trace(farbe);             //   <------------hier ist alles super

        farb_btn.onRelease = function() {
                update_cor = farbe;
                cor_update = 1;

                trace(this._name+" "+update_cor);//   <------------und hier halt nicht

                //loadVariablesNum("test_user.php", 0, "POST");
                //getURL("http://......de/test/test.php", "_self");
        };
}
 
Hi,

Du musst jedem Button seinen Farbwert als eigene Eigenschaft mitgeben: Wenn auf einen Button geklickt wird, ist Deine Schleife ja schon längst abgearbeitet und die Variable "farbe" längst nicht mehr gültig:
Code:
cor = {cor0:"#ff0000", cor1:"#0000ff", cor2:"#ffffff"};
for (var i = 0; i<3; i++) {
        farb_btn = this["cor"+i]; // mit dem []-Operator gehts einfacher
        farbe = cor[i]; // Hier reicht der Index
        farb_btn.farbe = farbe; // für jeden Button eine eigene Eigenschaft!
        farb_btn.onRelease = function() {
                update_cor = this.farbe; // mit this.farbe darauf zugreifen
                cor_update = 1;
        }
}

Gruß
.
 
Dank Dir ganz dolle. Hab ich mir ja gedacht, das es keine große Sache ist und ob Du es mir glabst oder nicht, aber diese Zeile
PHP:
farb_btn.farbe = farbe
hatte ich auch getestet, nur leider nicht daran gedacht mit
PHP:
this.farbe
darauf zuzugreifen. So ist das manchmal.

Du schreibst,
PHP:
farbe = cor[i]; // Hier reicht der Index
das geht bei mir so nicht (undefined), aber ist auch nicht so wichtig, ich nehme das was ich hatte. Liegt bestimmt am mehrdimensionalen Array? Wie zähle ich davon die Länge?
 
das geht bei mir so nicht (undefined), aber ist auch nicht so wichtig, ich nehme das was ich hatte. Liegt bestimmt am mehrdimensionalen Array?
Mein Fehler: Ich hatte nicht darauf geachtet, dass Du ein Objekt und kein Array angelegt hast. ;) Normalerweise verwende ich in diesen Fällen schlicht und einfach Arrays:
Code:
var cor = new Array("#ff0000", "#0000ff", "#ffffff");
trace(cor[1]); / --> "#0000ff"

Gruß
.
 
Ach, das ist ein Objekt, dachte das wäre ein Array. :confused: Siehste wieder was dazu gelernt. Und deshalb konnte ich auch nicht die Anzahl mit
PHP:
cor.length
zählen. :rolleyes: So klärt sich alles von alleine auf.
Klar mit einem Array geht's auch, liegt bestimmt daran das ich immer zu viel rumprobiere und es dadurch meistens zu kompliziert mache. Ich sage mir nur immer, hauptsache es funktioniert.

Gruß
 
Zurück