Ergebnis 1 bis 10 von 10
  1. #1
    mondfinsternis ist offline Grünschnabel
    registriert
    25-04-2011
    Beiträge
    4

    Globale Variable per Parameter ändern

    Hallo,

    ich habe ein Problem mit einer gloablen Variable! Diese kann ich zwar in einer Funktion ändern, jedoch wird sie danach nicht als geändert belassen. Vielleicht liegt das am Parameter...

    In meinem Fall muss ich aber den Parameter auf jeden Fall verwenden.

    Code:
    <html>
    <script type="text/javascript">   
    var Wert = 2;
    function inc (zahl) {
    zahl = zahl + 1;
    alert(zahl)
    }
    </script>
    <form>
    <input type="button" value="Klick mich!" onclick="alert (Wert); inc (Wert);"></input>
    </html>
    Also ich frage mich, warum die Variable Wert nicht geändert wird. Weiß jemand eine Lösung?

  2. #2
    Avatar von Junkee[]
    Junkee[] ist offline Lounge-Member
    registriert
    08-05-2009
    Ort
    Leonberg
    Beiträge
    3.169

    AW: Globale Variable per Parameter ändern

    Wert = inc(Wert)

  3. #3
    Jodli ist offline Jungspund
    registriert
    24-06-2006
    Beiträge
    21

    AW: Globale Variable per Parameter ändern

    Weil deine Funktion die Variable Wert nicht anrührt.
    Es wird lediglich eine weitere globale Variable namens zahl angelegt.

    In Javascript laufen Funktionen immer per "call by Value".
    Das bedeutet, wenn du der Funktion inc die Variable Wert übergibst, wird ihr der Inhalt übergeben. Von wem dieser Inhalt kommt, ist der Funktion egal.

    Wenn du also deine Funktion folgend umänderst, müsste es funktionieren:

    Code:
    function inc (zahl) {
    Wert = zahl + 1;
    alert(Wert)
    }
    EDIT
    oha war ich zu langsam
    Geändert von Jodli (25-04-2011 um 11:37 Uhr) Grund: Nachtrag

  4. #4
    mondfinsternis ist offline Grünschnabel
    registriert
    25-04-2011
    Beiträge
    4

    AW: Globale Variable per Parameter ändern

    Danke für die Antworten!

    Aber leider habe ich dass Problem, dass ich die Funktion von verschiedenen ,,Orten" aus aufrufen möchte!

    Code:
    <html>
    <script type="text/javascript">   
    var ersterWert = 1;
    var zweiterWert = 2
    function inc (zahl) {
    Zahl = zahl + 1;
    }
    </script>
    <form>
    <input type="button" value="Klick mich!" onclick="alert (ersterWert); inc (ersterWert);"></input>
    <input type="button" value="Klick mich!" onclick="alert (zweiterWert); inc (zweiterWert);"></input>
    </html>
    etwa so...

    Was kann ich da machen, um auch die globalen Variablen zu ändern?

  5. #5
    Jodli ist offline Jungspund
    registriert
    24-06-2006
    Beiträge
    21

    AW: Globale Variable per Parameter ändern

    Was spricht gegen Junkees Lösung?

    Zusätzlich wäre es auch möglich, globale Variablen mittles window["globale_Variable"] zu ändern.

  6. #6
    mondfinsternis ist offline Grünschnabel
    registriert
    25-04-2011
    Beiträge
    4

    AW: Globale Variable per Parameter ändern

    Mmmh, ich verstehe zwar die Logik, scheitere aber an der Ausführung...

    Code:
    <html>
    <script type="text/javascript">   
    var ersterWert = 1;
    var zweiterWert = 2;
    function inc (zahl) {
    Zahl = zahl + 1;
    }
    </script>
    <form>
    <input type="button" value="Klick mich!" onclick="alert(ersterWert); ersterWert = inc(ersterWert);"></input>
    <input type="button" value="Klick mich!" onclick="alert(zweiterWert); zweiterWert = inc(zweiterWert);"></input>
    </html>
    Geändert von mondfinsternis (25-04-2011 um 12:06 Uhr)

  7. #7
    Avatar von Dormilich
    Dormilich ist offline Kaiser
    registriert
    15-01-2010
    Beiträge
    1.311

    AW: Globale Variable per Parameter ändern

    Zitat Zitat von Jodli Beitrag anzeigen
    Weil deine Funktion die Variable Wert nicht anrührt.
    In Javascript laufen Funktionen immer per "call by Value".
    aber nur wenn die Variable kein Objekt ist.

  8. #8
    Jodli ist offline Jungspund
    registriert
    24-06-2006
    Beiträge
    21

    AW: Globale Variable per Parameter ändern

    achso ja. Die Funktion muss den Wert auch zurück geben, damit es funktionieren kann.
    Momentan müssten deine Variablen nach dem Funktionsaufruf den Wert undefined haben (da die Funktion nichts zurück gibt).

    Hau in deine Funktion ans Ende noch ein
    Code:
    return zahl;
    rein (und achte auf Groß und klein-Schreibung. In der von dir angegebenen Code-Schnipsel ist zahl bei der Zuweisung groß geschrieben ).

    EDIT

    aber nur wenn die Variable kein Objekt ist.
    Stimmt das ist richtig.
    Hatte pointer nicht bedacht, danke
    Geändert von Jodli (25-04-2011 um 12:19 Uhr) Grund: Nachtrag

  9. #9
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.760

    AW: Globale Variable per Parameter ändern

    Man könnte auch noch so was machen:
    Code:
    function inc(variableName){
    	window[variableName]++;
    }
    
    inc("ersterWert");
    - nur erschließt sich mir der Sinn des Ganzen nicht wirklich... v.A., da man globale Variablen so weit wie möglich vermeiden sollte.

  10. #10
    mondfinsternis ist offline Grünschnabel
    registriert
    25-04-2011
    Beiträge
    4

    AW: Globale Variable per Parameter ändern

    @ Jodli:

    Danke!
    Die Lösung lautet also:

    Code:
    <html>
    <script type="text/javascript">   
    var ersterWert = 1;
    var zweiterWert = 1;
    function inc (zahl) {
    zahl = zahl + 1;
    return zahl;
    }
    </script>
    <form>
    <input type="button" value="Klick mich!" onclick="alert(ersterWert); ersterWert = inc(ersterWert);"></input>
    <input type="button" value="Klick mich!" onclick="alert(zweiterWert); zweiterWert = inc(zweiterWert);"></input>
    </html>

Ähnliche Themen

  1. globale Variable
    Von ru2009ru im Forum JavaScript
    Antworten: 12
    Letzter Beitrag: 30-12-2010, 15:16
  2. Globale Variable
    Von kulturfenster im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 24-08-2009, 15:38
  3. Closure und globale Variable
    Von WootWoot im Forum JavaScript
    Antworten: 8
    Letzter Beitrag: 15-02-2008, 19:29
  4. globale variable
    Von jr-ewing im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 13-11-2007, 12:13
  5. globale Variable in Funktionen
    Von Iltis im Forum JavaScript
    Antworten: 4
    Letzter Beitrag: 22-03-2004, 21:24

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •