• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Variable außerhalb der Funktion

konzule

Neues Mitglied
Hallo ;),
stehe mit Javascript und jQuery noch ziemlich an anfang.
Ich hab ein problem damit die Werte aus meiner Funktion zu bekommen. Und zwar definiere ich oben ein Variable und lasse sie durch die Funktion laufen. Am ende will ich außerhalb der Funktion auf den Wert zugreifen
Code:
    $(document).ready(function() {
       var left = 0;
       var top = 0;
        function bewegen(){
            $(this).keydown(function(e) {
                if (e.which == 37) {
                    left = $("#box").offset().left;
                    $("#box").offset({left: left-10});
                }
                if (e.which == 38) {
                    top = $("#box").offset().top;
                    $("#box").offset({top: top-10});
                }
                if (e.which == 39) {
                    left = $("#box").offset().left;
                    $("#box").offset({left: left+10});
                }
                if (e.which == 40) {
                    top = $("#box").offset().top;
                    $("#box").offset({top: top+10});
                }
            });
        }

    bewegen();

        $("#ausgabe").html(top);
    });
 
Du kannst nicht von außen auf funktionsinterne Variablen zugreifen. Siehe dazu:
http://www.w3schools.com/js/js_scope.asp

Du müsstest also top ausserhalb definieren, aber das wäre schlechter Stil. In deinem Fall scheint das aber auch keinen Sinn zu machen. Du willst ja vermutlich bei jedem Tastendruck eine Ausgabe haben. Dazu müsste $("#ausgabe").html(top); einfach ans Ende der bewegen() Funktion.
 
@pax: konzule hat die Variable top doch außerhalb der Funktion bewegung() definiert. Das Problem ist nicht die Sichtbarkeit, sondern, wie Du richtig schreibst, dass die Ausgabe-Anweisung beim Tastendruck gar nicht durchlaufen wird.
 
Sofern die if-Bedingung greift, verändert sich Variablenwert schon und ist auch außerhalb der Funktion sichtbar. Das Problem im obigen Code heißt $(this)
 
@Sempervivum
Du hast natürlich völlig Recht. Ich hatte den Code nicht rauskopiert sondern nur hier angesehen und mich einfach verguckt. Sorry dafür.
 
Zurück
Oben