Divi: Variable in Funktion aufrufen

Hi Leute
Auf SelfHTML werden ja Javascript Variablen schon angesprochen - aber mein Problem ist folgendes: Wenn ich eine Variable in Funktion a einen Wert zuweise, dann hat sie in Funktion b diesen Wert nicht mehr... ich hab das nach folgendem Schema gemacht:

var x = "";

function a() {
 b();
 alert(x);
}

function b() {
 x = "1";
}

Kann mir einer sagen, was ich falsch mache? Es muss doch anders gehen als den Funktionsaufrufen immer x als Parameter mitzugeben...

  1. moin Divi :)

    Kann mir einer sagen, was ich falsch mache? Es muss doch anders gehen als den Funktionsaufrufen immer x als Parameter mitzugeben...

    Ich verstehe dein Problem nicht ganz.... hab dein Skript mal ein wenig abgeändert um dir zu zeigen, dass sowohl Funktion a() als auch b() die Variable x und ihren Wert kennnen:

      
    var x = 0; //x soll eine Zahl sein  
      
    function a() {  
      x=1       //x bekommt den Wert 1  
      alert(x); //erste Ausgabe: "1"  
      b();      //b wird aufgerufen  
     alert(x);  //dritte Ausgabe: "2"  
    }  
      
    function b() {  
     x++;       //x erhält den nächst höheren Wert (2)  
     alert(x);  //zweite Ausgabe: "2"  
    }  
    
    

    liebe Grüße aus Berlin
    lina-

    --
    Self-Code: ie:% fl:( br:^ va:) ls:/ fo:| rl:( ss:) de:] js:| mo:)
    1. Hallo,

      im Zweifelsfall mal über _return_ nachdenken!

      bydey

      --
      -- noch immer ein erfolgloser <DIV> Jünger --
  2. Hell-O!

    Wenn ich eine Variable in Funktion a einen Wert zuweise, dann hat sie in Funktion b diesen Wert nicht mehr... ich hab das nach folgendem Schema gemacht:

    Du musst den Gültigkeitsbereich einer Variablen festlegen:

    function a() {  
      x = 1;  
      var y = 2;  
      b();  
      alert(x); // 2  
      alert(y); // 2  
    }  
      
    function b() {  
      x = 2;  
      y = 3;  
      alert(y); // 3  
    }
    

    Oder wo liegt dein Problem?

    Siechfred

  3. hi,

    Auf SelfHTML werden ja Javascript Variablen schon angesprochen

    Fein erkannt, aber ...

    • aber mein Problem ist folgendes: Wenn ich eine Variable in Funktion a einen Wert zuweise, dann hat sie in Funktion b diesen Wert nicht mehr...

    nicht fein genutzt.

    Auch bzgl. globaler und lokaler Variablen hilft dir selfhtml nämlich gerne aufklärend weiter, und bzgl. Funktionen mit den Übergabemöglichkeiten Parameter und Rückgabewert ebenfalls.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  4. <script type="text/javascript">
      var xmlhttp;
      var info_carrier = "";

    function call_slideshow(__item_id) {
       test = get_user_images(__item_id);
       alert(info_carrier); // Rückgabe ""
      }

    function get_user_images(__item_id) {
       url = "<?php echo TEAM_MEMBER_INFO_PREFIX; ?>" + __item_id;

    // code for Mozilla, etc.
       if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange=xmlhttpChange;
        xmlhttp.open("GET",url,true);
        xmlhttp.send(null);
       }
       // code for IE
       else if (window.ActiveXObject){
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        if (xmlhttp) {
         xmlhttp.onreadystatechange = xmlhttpChange;
         xmlhttp.open("GET",url,true);
         xmlhttp.send(null);
        }
       }

    return true;
      }

    function xmlhttpChange() {
       // if xmlhttp shows "loaded"
       info_carrier = "";

    if (xmlhttp.readyState==4) {
        // if "OK"
        if (xmlhttp.status==200) {
         info_carrier = xmlhttp.responseText;
         alert(info_carrier); // 2 Zeilen die aus der Datei ausgelesen wurden
        }
       }

    return true;
      }
     </script>

    1. Danke für deinen vielsagenden Code und der ausfürhlich formulierten Frage.

      <script type="text/javascript">
        var xmlhttp;
        var info_carrier = "";

      function call_slideshow(__item_id) {
         test = get_user_images(__item_id);
         alert(info_carrier); // Rückgabe ""
        }

      Dein Problem ist, dass du den Request asynchron benutzt, d.h. der Inhalt ist erst nach dem laden vorhanden:

      xmlhttp.onreadystatechange=xmlhttpChange;

      ....

      xmlhttp.onreadystatechange = xmlhttpChange;

      Diese Funktionen werden erst nachdem laden aufgerufen und erst dann wird der Inhalt deiner Globalen Variabel gesetzt.

      Dein Ansatz ist also falsch, du  kannst nicht ...

      test = get_user_images(__item_id);
         alert(info_carrier); // Rückgabe ""

      ... so vorgehen, sondern musst z.b. in der Funktion xmlhttpChange() eine von dir gewünschtes Ergeinis ausführen.

      Struppi.

    2. Danke für deinen vielsagenden Code und der ausfürhlich formulierten Frage.

      <script type="text/javascript">
        var xmlhttp;
        var info_carrier = "";

      function call_slideshow(__item_id) {
         test = get_user_images(__item_id);
         alert(info_carrier); // Rückgabe ""
        }

      Dein Problem ist, dass du den Request asynchron benutzt, d.h. der Inhalt ist erst nach dem laden vorhanden:

      xmlhttp.onreadystatechange=xmlhttpChange;

      ....

      xmlhttp.onreadystatechange = xmlhttpChange;

      Diese Funktionen werden erst nachdem laden aufgerufen und erst dann wird der Inhalt deiner Globalen Variabel gesetzt.

      Dein Ansatz ist also falsch, du  kannst nicht ...

      test = get_user_images(__item_id);
         alert(info_carrier); // Rückgabe ""

      ... so vorgehen, sondern musst z.b. in der Funktion xmlhttpChange() eine von dir gewünschtes Ergeinis ausführen.

      Struppi.