pyro: Variable aus Variable zuweisen

Hallo Forum,

habe gerade ein schwieriges JavaScript Problem, bei dem ich nicht mal weiß, wie ich am Besten Google um Hilfe bitten könnte.
Ich habe:

var Variablenliste=new Array("latsche","zufall","winter","limo");
var Neuerwert="Beispiel";

Jetzt sollen alle Inhalte des Arrays Variablen werden und diese den Wert Beispiel bekommen, also
latsche="Beispiel", zufall="Beispiel", winter="Beispiel", limo="Beispiel"

Bei PHP geht das, bei Javascript hab ich keine Ahnung, wie ich das machen könnte.

Danke
Alex

  1. Jetzt sollen alle Inhalte des Arrays Variablen werden und diese den Wert Beispiel bekommen, also
    latsche="Beispiel", zufall="Beispiel", winter="Beispiel", limo="Beispiel"

    global oder lokal in einer Funktion?

    Struppi.

    1. In einer Funktion, von da aus global

      Alex

      1. In einer Funktion, von da aus global

        Alex

        vieleicht solltest du kurz erklären was du machen möchtest, ich bezweifle das du 4 Variablen mit dem selben Wert füllen willst. Das kann auch PHP, macht aber kein Sinn.

        Bei PHP liegt der Sinn in einer solchen Funktion, aus einem Array getrennte Variablen zu machen.

        1. OK. Ich dachte in der Kürze liegt die Würze.
          In der Tat ich will immer andere Werte in die Variable reinfüllen.

          Hier mein ganz konkretes Problem:

          Ich hab ein Array:
            nachlade_bilder[1][counter]=ort;
            nachlade_bilder[1][counter]=new Image();
            nachlade_bilder[2][counter].src=dateiname_mit_pfad;
            nachlade_bilder[3][counter]=max_height;
            nachlade_bilder[4][counter]=max_width;
            nachlade_bilder[5][counter]=0; // Retry Counter
            nachlade_bilder[6][counter]=1; // 1: erstmal lokal versuchen
                                           // 2: dann auf Server
            nachlade_bilder[7][counter]=dateiname;
            nachlade_bilder[8][counter]=typ; // 1: Per getElementById einsetzen
                                                   In welche steht in [1]
                                             // 2: in Variable einsetzen
                                                   In welche steht in [1]

          Ich fülle das Array, dann lädt JS per window.setTimeout("bildnachladen2()", 1000); das Bild nach.

          Und hier kommt mein Problem:
          Wenn ich das Bild per document.getElementById direkt einsetzen kann ist es einfach. Wenn ich es allerdings in eine global Variable reinladen möchte dann bin ich einfach mit meinem JS-Latein am Ende.

          Mit anderen Worten: HILFE!!!

          Danke
          Alex

          1. Hier mein ganz konkretes Problem:

            Ich hab ein Array:
              nachlade_bilder[1][counter]=ort;
              nachlade_bilder[1][counter]=new Image();
              nachlade_bilder[2][counter].src=dateiname_mit_pfad;
              nachlade_bilder[3][counter]=max_height;
              nachlade_bilder[4][counter]=max_width;
              nachlade_bilder[5][counter]=0; // Retry Counter
              nachlade_bilder[6][counter]=1; // 1: erstmal lokal versuchen
                                             // 2: dann auf Server
              nachlade_bilder[7][counter]=dateiname;
              nachlade_bilder[8][counter]=typ; // 1: Per getElementById einsetzen
                                                     In welche steht in [1]
                                               // 2: in Variable einsetzen
                                                     In welche steht in [1]

            So ganz verstehe ich deine Frage nicht, aber du möchtest hier vielleicht lieber ein Objekt benutzen. (Dazu dürfte dieser Artikel ganz interessant für dich sein)

            nachlade_bilder[counter]= {  
            ort: ort,  
            image:new Image(),  
            max_height: max_height,  
            max_width: max_width,  
            retry: 0, // Retry Counter  
            wo: 1, // 1: erstmal lokal versuchen  
            // 2: dann auf Server  
            name: dateiname,  
            typ: typ // 1: Per getElementById einsetzen  
            };  
              
            nachlade_bilder[counter].image.rc = dateiname_mit_pfad;
            

            Und hier kommt mein Problem:
            Wenn ich das Bild per document.getElementById direkt einsetzen kann ist es einfach. Wenn ich es allerdings in eine global Variable reinladen möchte dann bin ich einfach mit meinem JS-Latein am Ende.

            Das verstehe ich nicht, was heißt reinladen?

            Struppi.

            1. OK. Das mit dem Objekt wäre es ne Sache gewesen. Danke.

              Reinladen:
              Ich erstelle eine Tabelle mit ganz vielen Einträgen, eine Spalte sind Bilder.
              Eigentlich mach ich alles Inline-Bildern, die ich vorher nach Base64 gerechnet habe und in das Array bilder abspeichere.

              var myIMG=new Image();
               myIMG.src=bilder[i];
               myDIV.appendChild(myIMG);

              Neue Browser verstehen die Inline Bilder. IE 6 und IE 7 leider nicht. Daher muss ich sie nachladen. Hier gibts dann zwei Möglichkeiten.
              1. Lokal oder wenn nicht vorhanden 2. aus dem Web.
              Daher muss ich die src der Bilder in das Array Bilder abspeichern. Ich hatte es schon versucht es direkt reinzuladen ohne window.setTimeout. Aber dann hat das mit bilder[i].complete nicht funktioniert.
              Das ganze wird eine Offline-Anwendung.

              Danke
              Alex

              1. Hi,

                Ich erstelle eine Tabelle mit ganz vielen Einträgen, eine Spalte sind Bilder.
                Eigentlich mach ich alles Inline-Bildern, die ich vorher nach Base64 gerechnet habe und in das Array bilder abspeichere.

                Aus welchem Grund sind die Bilder inline untergebracht?

                Neue Browser verstehen die Inline Bilder. IE 6 und IE 7 leider nicht. Daher muss ich sie nachladen. Hier gibts dann zwei Möglichkeiten.

                1. Lokal oder wenn nicht vorhanden 2. aus dem Web.

                Wo in deinem Code sind diese unterschiedlichen Fälle abgebildet?

                Daher muss ich die src der Bilder in das Array Bilder abspeichern.

                Und welches Problem hast du dabei konkret?

                Ich hatte es schon versucht es direkt reinzuladen ohne window.setTimeout. Aber dann hat das mit bilder[i].complete nicht funktioniert.

                Das mit *was*?
                Auch davon hast du uns noch kein bisschen Code gezeigt.

                Bitte lies noch mal die Tipps für Fragende durch, und liefere dann eine Problembeschreibung, die das ganze *nachvollziehbar* macht.

                MfG ChrisB

                --
                Light travels faster than sound - that's why most people appear bright until you hear them speak.
                1. Hallo,

                  die Bilder sind inline untergebracht, da es sich, wie ich schrieb, um eine Offline-Anwendung handelt. Der Vorteil dieser Anwendung ist das All-Inclusive-Feature. Man braucht nur eine Datei, die alle Styles, HTML-Codea, JS, Bilder, etc. beinhaltet.

                  Mittlerweile hab ich aber das Gefühl, dass aus meiner einfachen Frage - ich hatte versucht das Problem zu abstrahieren - hier was wächst was immer mehr ins Chaos führt. Ich habe meine ursprüngliche Frage mir nochmal durchgelesen und mit dem Text aus dem Link (danke übrigens) verglichen. Die Frage war meiner Meinung nach präzise gestellt und auch der Code war in Ordnung. Wenn ich jetzt hier den gesamten Code, wie auch die Funktionen, die involviert sind poste, dann mach ich schnell mal 1000 Zeilen. Und ich denke, das liest wohl keiner gerne.

                  Ich war auch überrascht, dass statt eine Antwort auf meine Frage, der Sinn und Unsinn meines Vorhabens durchleuchtet wird. Ich denke, wenn es so unsinnig wäre, dann würde es in PHP wohl nicht so einfach zu realisieren sein. Leider kann ich kein PHP nehmen, da es mit der Offline-Anwendung dann nichts mehr werden würde.

                  Ich hoffe immer noch auf eine einfache Lösung.

                  Danke
                  Alex

                  1. [latex]Mae  govannen![/latex]

                    Ich war auch überrascht, dass statt eine Antwort auf meine Frage, der Sinn und Unsinn meines Vorhabens durchleuchtet wird.

                    Ist halt so. (#224).

                    Ich denke, wenn es so unsinnig wäre, dann würde es in PHP wohl nicht so einfach zu realisieren sein. Leider kann ich kein PHP nehmen, da es mit der Offline-Anwendung dann nichts mehr werden würde.

                    ChrisB hat dir das Grund-Prinzip, wie man solche Variablen erstellen könnte sowie eine (fast immer) wesentlich bessere Alternative bereits am gleichen Tag genannt.

                    Cü,

                    Kai

                    --
                    A workaround for an avoidable problem often adds clutter and overhead to the program which
                    could have been avoided by not creating the problem in the first place.(Garrett Smith/clj)
                    Foren-Stylesheet Site Selfzeug JS-Lookup
                    SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
                    1. [latex]Mae  govannen![/latex]

                      Ich war auch überrascht, dass statt eine Antwort auf meine Frage, der Sinn und Unsinn meines Vorhabens durchleuchtet wird.

                      Ist halt so. (#224).

                      Cool. Das war mal was lustiges.

                      Ich denke, wenn es so unsinnig wäre, dann würde es in PHP wohl nicht so einfach zu realisieren sein. Leider kann ich kein PHP nehmen, da es mit der Offline-Anwendung dann nichts mehr werden würde.

                      ChrisB hat dir das Grund-Prinzip, wie man solche Variablen erstellen könnte sowie eine (fast immer) wesentlich bessere Alternative bereits am gleichen Tag genannt.

                      Meine Hoffnung war, dass man es anders lösen kann, da ich sonst den gesamten Code (der ursprünglich nur IE 8 und FF, die Inline-Bilder kennen) ändern müsste.

                      Hier ist mal das PHP Beispiel:
                      $a="hallo";
                      $$a="guten tag";
                      echo $hallo;

                      "guten tag"

                      Cü,

                      Kai

                      Danke
                      Alex

                      1. JUHEE! Gefunden!

                        Danke an alle. Danke an Kai, denn damit hab ich mir nochmal ChrisBs Antwort genau durchgelesen und noch ein wenig gegoogelt:

                        Hier ist die Lösung.
                        Kommt von motiv und ist hier zu finden: http://board.gulli.com/thread/179758-javascript-variable-variablen/

                        var variablenname = 'blabla' ;
                        var variableninhalt = 10;
                        eval (variablenname+"="+variableninhalt+";");
                        alert("blabla: "+blabla);

                        blabla: 10

                        1000Dank
                        Alex

                        1. [latex]Mae  govannen![/latex]

                          JUHEE! Gefunden!

                          Nein.

                          Danke an alle. Danke an Kai, denn damit hab ich mir nochmal ChrisBs Antwort genau durchgelesen und noch ein wenig gegoogelt:

                          Hier ist die Lösung.
                          Kommt von motiv und ist hier zu finden: http://board.gulli.com/thread/179758-javascript-variable-variablen/

                          ... und ist völliger Unsinn von jemandem, der von Javascript sehr wenig Ahnung zu haben scheint. Die von ChrisB erwähnte Schreibweise object["name"] funktioniert genauso gut, ist performanter und birgt nicht die potentiellen Gefahren von eval.
                          Wenn du gobale Variablen willst, mußt du halt für object das oberste JS-Object window einsetzen

                          Cü,

                          Kai

                          --
                          A workaround for an avoidable problem often adds clutter and overhead to the program which
                          could have been avoided by not creating the problem in the first place.(Garrett Smith/clj)
                          Foren-Stylesheet Site Selfzeug JS-Lookup
                          SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
                          1. [latex]Mae  govannen![/latex]

                            ... und ist völliger Unsinn von jemandem, der von Javascript sehr wenig Ahnung zu haben scheint. Die von ChrisB erwähnte Schreibweise object["name"] funktioniert genauso gut, ist performanter und birgt nicht die potentiellen Gefahren von eval.
                            Wenn du gobale Variablen willst, mußt du halt für object das oberste JS-Object window einsetzen

                            Dennoch ist es auch weiterhin besser, die Variablen als Elemente in _einem_ Array zu sammeln und dieses dann meinetwegen global zu verwenden, wenn es sich gar nicht vermeiden lässt.

                            Und: wer für sowas eval() nutzt, der frisst auch kleine Kinder und schubst alte Leute auf die Straße, wenn ein LKW kommt. ^^

                            Cü,

                            Kai

                            --
                            A workaround for an avoidable problem often adds clutter and overhead to the program which
                            could have been avoided by not creating the problem in the first place.(Garrett Smith/clj)
                            Foren-Stylesheet Site Selfzeug JS-Lookup
                            SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
                            1. ... und ist völliger Unsinn von jemandem, der von Javascript sehr wenig Ahnung zu haben scheint.

                              Tja, mir ists egal. Hauptsache es funktioniert. Mein Kunde wird sich nicht den Quellcode ansehen und mir ob Grund des hässlichen Codes 10% abziehen.

                              Die von ChrisB erwähnte Schreibweise object["name"] funktioniert genauso gut, ist performanter und birgt nicht die potentiellen Gefahren von eval.

                              Manchmal sind auch unelegante und langsamere Lösungen besser und passen einfach besser. Ich würde auch lieber jeden Tag mit dem Porsche für 60.000 Euro 200 Meter in die Arbeit fahren, nehm aber lieber den alten Corsa, weil er sprittsparender ist.

                              Wenn du gobale Variablen willst, mußt du halt für object das oberste JS-Object window einsetzen

                              Dennoch ist es auch weiterhin besser, die Variablen als Elemente in _einem_ Array zu sammeln und dieses dann meinetwegen global zu verwenden, wenn es sich gar nicht vermeiden lässt.

                              Und: wer für sowas eval() nutzt, der frisst auch kleine Kinder und

                              schubst alte Leute auf die Straße, wenn ein LKW kommt. ^^

                              Gerne. Dafür bekommt man die Rentner-Abwrackprämie...

                              Cü,

                              Kai

                              Alex

                              1. Hallo,

                                Und: wer für sowas eval() nutzt, der frisst auch kleine Kinder und schubst alte Leute auf die Straße, wenn ein LKW kommt. ^^
                                Gerne. Dafür bekommt man die Rentner-Abwrackprämie...

                                ich dachte, das Rentenproblem wäre schon gelöst: Ab 2010 dürfen Rentner bei Rot über die Straße gehen. Ab 2012 müssen sie ...

                                *nixwieweg*
                                 Martin

                                --
                                Alkohl ist ungesund,
                                Rauchen ist schädlich,
                                Sex ist unanständig
                                - und die Erde ist eine flache Scheibe.
                                1. [latex]Mae  govannen![/latex]

                                  Und: wer für sowas eval() nutzt, der frisst auch kleine Kinder und schubst alte Leute auf die Straße, wenn ein LKW kommt. ^^
                                  Gerne. Dafür bekommt man die Rentner-Abwrackprämie...

                                  ich dachte, das Rentenproblem wäre schon gelöst: Ab 2010 dürfen Rentner bei Rot über die Straße gehen. Ab 2012 müssen sie ...

                                  *nixwieweg*

                                  Ich präferiere die Lösung aus einem meiner Lieblingsfilme

                                  *auchweg*

                                  Cü,

                                  Kai

                                  --
                                  A workaround for an avoidable problem often adds clutter and overhead to the program which
                                  could have been avoided by not creating the problem in the first place.(Garrett Smith/clj)
                                  Foren-Stylesheet Site Selfzeug JS-Lookup
                                  SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
                                  1. Hallo,

                                    Ich präferiere die Lösung aus einem meiner Lieblingsfilme

                                    der Film hat mich schon fasziniert, als ich ihn mit etwa 10 Jahren zum ersten Mal im Fernsehen gesehen habe. Wirklich verstanden habe ich ihn aber erst Jahre später. Und die Methode ... ach, ich weiß nicht ...

                                    *auchweg*

                                    Na dann stehen wir ja jetzt wieder nebeneinander. ;-)

                                    Ciao,
                                     Martin

                                    --
                                    Das einzige Problem beim Nichtstun: Man weiß nie, wann man damit fertig ist.
                              2. Manchmal sind auch unelegante und langsamere Lösungen besser und passen einfach besser. Ich würde auch lieber jeden Tag mit dem Porsche für 60.000 Euro 200 Meter in die Arbeit fahren, nehm aber lieber den alten Corsa, weil er sprittsparender ist.

                                Und du machst es hier aber genau umgekehrt. Du hast einen spritsparenden Porsche gezeigt bekommen. Möchtest aber lieber den verosteten Cadillac ohne TÜV benutzen.

                                Struppi.

  2. Hi,

    Jetzt sollen alle Inhalte des Arrays Variablen werden

    das ist eine sehr, sehr schlechte Idee.

    Bei PHP geht das,

    Auch bei PHP ist es eine sehr, sehr schlechte Idee.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  3. Hi,

    var Variablenliste=new Array("latsche","zufall","winter","limo");
    var Neuerwert="Beispiel";

    Jetzt sollen alle Inhalte des Arrays Variablen werden und diese den Wert Beispiel bekommen, also
    latsche="Beispiel", zufall="Beispiel", winter="Beispiel", limo="Beispiel"

    Bei PHP geht das,

    Trotzdem gibt es so gut wie nie einen vernünftigen grund dafür, es zu machen.

    bei Javascript hab ich keine Ahnung, wie ich das machen könnte.

    Das Prinzip der variablen Variablen lässt sich auch in JavaScript emulieren, in dem man Objekteigenschaften über objekt["eigenschaft"] anspricht, statt über objekt.eigenschaft.

    Aber noch mal: Das Konzept variabler Variablen an *sich* ist seltenst in der Praxis brauchbar.
    Arrays sind so gut wie immer die bessere Alternative.

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.