Ergebnis 1 bis 3 von 3
  1. #1
    whzfuxxx ist offline Grünschnabel
    registriert
    22-08-2012
    Beiträge
    4

    Kurze Erläuterung zu globalen Variablen, Rückgabewerten und Wertübergabe

    Hi ihr,

    ich bin jetzt seit ein paar Wochen dabei mir JavaScript anzueignen und nach einige Startschwierigkeiten und
    diverser warmer Sommertage habe ich nun zumindest die Syntax einigermaßen drauf.
    Was mir immernoch ständig Steine in den Weg legt sind die Wertübergabe / Rückgabewerte.

    Und zwar habe ich kürzlich angefangen einen Taschenrechner programmieren zu wollen.
    Soweit so gut,anbei der Quellcode, der nun noch relativ simpel gehalten ist aber mich schon vor das erste Problem stellt, was ich nun schon mehrere Stunden versuche zu lösen:

    Index.html
    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>     
      <head>       
        <meta http-equiv="content-type" content="text/html; charset=windows-1250">       
        <meta name="generator" content="PSPad editor, www.pspad.com">       
        <title>    
        </title>  	 
        <script type="text/javascript" src="rechnen.js"> </script>      
        <script type="text/javascript">
          {
            var calculation = new Array(0);
            var i = 0;
          }
        </script>
      </head>     
      <body>        
        <form name="control">         
          <input name="screen" size="10">
          <br>
          <input type="button" name="plus_button" value="+" onclick="add_value(document.control.plus_button.value,calculation,i)">   
          <input type="button" name="minus_button" value="-" onclick="add_value(document.control.minus_button.value,calculation,i)">   
          <input type="button" name="multi_button" value="*" onclick="add_value(document.control.multi_button.value,calculation,i)">   
          <input type="button" name="divi_button" value="/" onclick="add_value(document.control.divi_button.value,calculation,i)">   
          <br>
          <input type="button" name="seven_button" value="7" onclick="add_value(document.control.seven_button.value,calculation,i)">   
          <input type="button" name="eight_button" value="8" onclick="add_value(document.control.eight_button.value,calculation,i)">   
          <input type="button" name="nine_button" value="9" onclick="add_value(document.control.nine_button.value,calculation,i)">
          <input type="button" name="is_button" value="=" onclick="result(calculation,i)">   
          <br>
          <input type="button" name="four_button" value="4" onclick="add_value(document.control.four_button.value,calculation,i)">   
          <input type="button" name="five_button" value="5" onclick="add_value(document.control.five_button.value,calculation,i)">   
          <input type="button" name="six_button" value="6" onclick="add_value(document.control.six_button.value,calculation,i)">
          <input type="button" name="clear_button" value="Clear" onclick="reset()">      
          <br>
          <input type="button" name="one_button" value="1" onclick="add_value(document.control.one_button.value,calculation,i)">   
          <input type="button" name="two_button" value="2" onclick="add_value(document.control.two_button.value,calculation,i)">   
          <input type="button" name="three_button" value="3" onclick="add_value(document.control.three_button.value,calculation,i)">   
          <input type="button" name="clear_button" value="Test" onclick="test(calculation)">      
          </form>     
      </body>
    </html>

    rechnen.js
    Code:
    function add_value(button_value,calculation,i)
    {
      calculation[i] = button_value;
      i++; 
      return i;
      return calculation;
    }
    
    function result(calculation)
    {
      alert(i);
    }
    Nun folgende Fragen:

    - Wieso bleibt i, als Zählvariabel dauerhaft auf 0, wodurch mir das Array calculate auch nur einen einzigen Wert zurück geben kann, nämlich den Inhalt von calculate[0]? Normalerweise gebe ich doch durch das return i; den aktuellen Wert von i wieder zurück dahin, wo er herkommt oder?
    Eine Schleife dürfte doch hier nicht notwendig sein, ich erhöhe doch lediglich die Zählvariabel, nicht mehr und nicht weniger.

    - Ist es relevant in welcher Reihenfolge ich Werte an eine Funktion übergebe und entgegenenehme?
    Soweit ich das mitgeschnitten habe kann man ja beispielsweise aus dem HTML Dokument die Funktion ergebnis(i, j, k) aufrufen und im .js Dokument andere Bezeichnungen für die Übergabewerte nehmen. (Den Sinn dahinter habe ich nicht ganz begriffen, da es meiner Meinung nach das ganze nur unübersichtlich macht, aber okay)
    Wie dem auch sei. Ist es dann ein Unterschied ob ich im Javascript function ergebnis(k, j, i) oder ergebnis(i, j, k) verwende?

    - Ich hatte zwischenzeitlich probiert anstatt das ganze in einer Variablen zu speichern, eine Zeichenkette zu bilden und in document.control.screen.value auszugeben.
    Dazu habe ich versucht immer as aktuelle Array Feld mithilfe von +calculate[i] hinzuzufügen, um diese Kette dann am Ende wieder auseinanderzurfriemeln.
    Dadurch wurde aber auch immer nur die aktuelle Eingabe angezeigt, was vmtl. auch an der Tatsache lag, dass i stehts auf 0 blieb.
    Dennoch die Frage, wie füge ich an eine Variable oder ein Objekt (in diesem Fall document.control.screen.value) einen Wert zum bestehenden an?
    Meiner Meinung nach und nachdem was ich gelesen habe müsste ads doch mit beispielsweise folgendem Code klappen, oder?

    Code:
    for(var j = 0; j <= i; j++)
    {
    document.control.screen.value = +calculate[i];
    }
    Oder muss ich da den Umweg gehen, erst den Inhalt auszulesen, in eine Variable zu speichern um ihn dann zusammenzufügen und wieder in screen.value zu schreiben?

    - Habt ihr eine gute Referenz, wo man solche simplen Dinge verständlich und möglichst mit praktischem Beispiel vermittelt bekommt?

    - Wie läuft das ganze mit globalen variablen, diese müssen ja außerhalb einer Funktion stehen, aber irgendwie akzeptieren meine Scripts das nicht. Gibt esda eine Kennzeichnung?

    Danke und gute Nacht!

  2. #2
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.666

    AW: Kurze Erläuterung zu globalen Variablen, Rückgabewerten und Wertübergabe

    Zitat Zitat von whzfuxxx Beitrag anzeigen
    - Wieso bleibt i, als Zählvariabel dauerhaft auf 0, wodurch mir das Array calculate auch nur einen einzigen Wert zurück geben kann, nämlich den Inhalt von calculate[0]? Normalerweise gebe ich doch durch das return i; den aktuellen Wert von i wieder zurück dahin, wo er herkommt oder?
    return gibt einen wert zurück, ergal wie der heisst, wird dadurch nichts verändert, ausser du weisst ihn zu.
    also i = add_value(button_value,calculation,i);

    EDIT: ach so, du kannst mit return nur einen wert/objekt zurückgeben, zweimal return nacheinander ist sinnlos, da nach dem 1. die funktion verlassen wird

    Zitat Zitat von whzfuxxx Beitrag anzeigen
    - Ist es relevant in welcher Reihenfolge ich Werte an eine Funktion übergebe und entgegenenehme?
    Soweit ich das mitgeschnitten habe kann man ja beispielsweise aus dem HTML Dokument die Funktion ergebnis(i, j, k) aufrufen und im .js Dokument andere Bezeichnungen für die Übergabewerte nehmen. (Den Sinn dahinter habe ich nicht ganz begriffen, da es meiner Meinung nach das ganze nur unübersichtlich macht, aber okay)
    Wie dem auch sei. Ist es dann ein Unterschied ob ich im Javascript function ergebnis(k, j, i) oder ergebnis(i, j, k) verwende?
    ja, hast du eine
    function ergebnis(a, b, c)
    {

    }
    die variablen
    var i = 1;
    var j = 2;
    var k = 3;
    und rufst sie einmal auf mit ergebnis(i, j, k) und einmal mit ergebnis(k, j, i)
    haben die parameter(lokalen variablen) a,b,c innerhalb der funktion einmal die werte 1,2,3 und das andere mal 3,2,1

    Zitat Zitat von whzfuxxx Beitrag anzeigen
    Meiner Meinung nach und nachdem was ich gelesen habe müsste ads doch mit beispielsweise folgendem Code klappen, oder?
    Code:
    for(var j = 0; j <= i; j++)
    {
    document.control.screen.value += calculate[i];
    // ist die kurze schreibweise für  document.control.screen.value = document.control.screen.value + calculate[i];
    }
    Zitat Zitat von whzfuxxx Beitrag anzeigen
    - Habt ihr eine gute Referenz, wo man solche simplen Dinge verständlich und möglichst mit praktischem Beispiel vermittelt bekommt?
    Selfhtml

    Zitat Zitat von whzfuxxx Beitrag anzeigen
    - Wie läuft das ganze mit globalen variablen, diese müssen ja außerhalb einer Funktion stehen, aber irgendwie akzeptieren meine Scripts das nicht. Gibt esda eine Kennzeichnung?
    entweder sie stehen im globalen namespace mit var variablenname, oder lokal ohne das var

  3. #3
    whzfuxxx ist offline Grünschnabel
    registriert
    22-08-2012
    Beiträge
    4

    AW: Kurze Erläuterung zu globalen Variablen, Rückgabewerten und Wertübergabe

    Wow, danke für die perfekte Erklärung!

    Vielen Dank kann jetzt endlich weitermachen

Ähnliche Themen

  1. jQuerry alternative zu einer Globalen Variable?
    Von chris-the-big im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 22-08-2012, 00:04
  2. Antworten: 3
    Letzter Beitrag: 31-08-2010, 07:40
  3. Problem mit Rückgabewerten bei übergebener Funktion
    Von Lord Lommel im Forum JavaScript
    Antworten: 10
    Letzter Beitrag: 08-12-2008, 14:19
  4. Funktion mit Rückgabewerten
    Von Flubber im Forum JavaScript
    Antworten: 6
    Letzter Beitrag: 27-02-2008, 08:06
  5. SAjax-Problem mit Rückgabewerten
    Von Brian_himself im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 06-07-2007, 16:05

Lesezeichen

Berechtigungen

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