Sandy: Rueckgabe von Werten

Hallo...

ich hab bloss eine kurze frage. stimmt es, dass wenn man in JS eine variable in einer function veraendert, sich die "draussen" nicht mitaendert????
heisst das ergebnis von:

beispiel = true;

function test(){
beispiel = false }

waere immernoch beispiel == true???

Sandy

  1. Hallo Sandy

    ich hab bloss eine kurze frage. stimmt es, dass wenn man in JS eine variable in einer function veraendert, sich die "draussen" nicht mitaendert????

    Ja. Ich hoffe, ich hab jetzt keinen Denkfehler drin, aber mit dem folgenden kann man das sehr schoen sehen:

    <HTML>
    <HEAD>
    <TITLE></TITLE>
    </HEAD>
    <BODY>
    <script language="JavaScript">
    beispiel = true;

    function setFalse(){
    beispiel = false;
    }

    function setTrue(){
    beispiel = true;
    }

    function show(){
    alert(beispiel);
    }
    </script>
    <BODY>
    <a href="javascript:setFalse()">von true auf false setzen</a><br>
    <a href="javascript:setTrue()">von false auf true setzen</a><br>
    <a href="javascript:show()">aktuellen Zustand anzeigen</a>
    </BODY>
    </HTML>

    viele Gruesse
      Stefan Muenz

    1. Ja.

      Ich meine natuerlich "Nein" <g>.
      Sprich, die "aeussere" veraendert sich, wenn du sie innerhalb einer Funktion veraenderst.

      viele Gruesse
        Stefan Muenz

      1. Ja.

        Ich meine natuerlich "Nein" <g>.
        Sprich, die "aeussere" veraendert sich, wenn du sie innerhalb einer Funktion veraenderst.

        viele Gruesse
          Stefan Muenz

        vielen dank stefan...
        schade nur, dass das bedeutet, dass ich meinen fehler immernoch nicht gefunden habe... und es waere wohl schlecht moeglich einen 10 Seiten langen Sourcecode ins forum zu stellen zur allgemeinen begutachtung...
        *seufz*(es geht immernoch um die sache mit dem redirect)

        Sandy

        1. Hallo Sandy und Stefan!

          Da waer aber noch ne Ergaenzung noetig. Sandy, vielleicht hast Du das mit dem Nichtveraendern in folgendem Zusammenhang gehoert:

          var x, y;

          function do_something(a, b) {
                  a = b + 3;
                  alert(a + "; " + b);    /* gibt 13; 10 */
                  x = 20;
              }

          x = 5; y = 10;
              alert(x + "; " + y);    /* gibt 5; 10 */
              do_something(x, y);
              alert(x + "; " + y);    /* gibt 20; 10 */

          In diesem Beispiel wird zwar a innerhalb der Funktion geaendert, das hat aber keine Rueckwirkung auf die Variable, wo a urspruenglich herkommt, naemlich x. Anders bei x = 20, dort wird eben das einzige x im ganzen Script veraendert, und das merkt man dann auch ausserhalb der Fkt.

          Soweit klar? Dann auf in den naechsten Level *g*

          var x, y;

          function do_something(x, y) {
                  x = y + 3;
                  alert(x + "; " + y);    /* gibt 13; 10 */
                  x = 20;
              }

          x = 5; y = 10;
              alert(x + "; " + y);    /* gibt 5; 10 */
              do_something(x, y);
              alert(x + "; " + y);    /* gibt immer noch 5; 10 */

          Jetzt habe ich a und b durch x und y ersetzt. Und ich weise x innerhalb der Funktion einen neuen Wert zu, naemlich y + 3, was 13 ist. Trotzdem merkt man das ausserhalb der Funktion nicht. Der Grund ist, das es jetzt mehrere x gibt, und da hat das funktionslokale den Vorrang. In der Fkt. wird also das x veraendert, das vorher a hiess (siehste, Namen sind Schall und Rauch).

          schade nur, dass das bedeutet, dass ich meinen fehler immernoch nicht gefunden habe... und es waere wohl schlecht moeglich einen 10 Seiten langen Sourcecode ins forum zu stellen zur allgemeinen begutachtung...

          Vielleicht hilft Dir das ja weiter. Wenn nicht, speicher den Code in einer TXT ab, stell die ins Netz und poste die URL.

          Calocybe

          1. hallo calobyte..

            vielen dank. das war echt anschaulich erklaert.. und jetzt verstehe ich es auch, wie die das in dem buch was ich hier habe meinten...

            aber wegen dem ins netz stellen von der sache... das ist nicht so einfach... ich mach grad ein praktikum und das sind die seiten einer grossen firma und ich denke nicht, dass die das unbedingt moechten, dass ich ihre seite hier schonmal vorab poste... obwohl das echt mehr als praktisch waere....

            es geht ja eigentlich darum die www.-adresse des redirect im form-tag dynamisch zu veraendern. heisst ich will ein function machen, die erkennt, was der user angekreuzt hat und danach den redirect umstellt auf die passende seite...
            mir wurde ja gesagt ich soll das mit cgi machen, aber da traue ich mich nicht so ran. ich kann ja kaum javascript, obwohl ich eigentlich schon ein semester c-programmierung hatte....

            naja... also vielen dank jedenfalls

            Sandy

            1. ups... meinte natuerlich hallo calocybe... :)
              sorry..