maggi1990: werte eines arrays in function addieren

Hallo liebe Gemeinde,

Ich weiß nicht mehr weiter und hoffe ihr könnt mir ein wenig auf die Sprünge helfen :)

Momentan sieht meine Funktion so aus:

  
function addieren(Kosten) {  
  var erg = 0;  
  for (i=1; i <= 12; i++) {  
    erg = erg + Kosten[i]; };  
  alert(erg);  
  return erg;  
  };

Das dazugehörige Array:
Kosten = new Array(40, 25, 8, 32.98, 11, 32, 9.9, 53.94, 87);

Nun habe ich festgestellt das er die Funktion gar nicht erst ausführt (aufgrund der fehlenden alert-Meldung).

Mozilla sagt mir in der Fehlerkonsle: missing ) after formal parameters

Was heißt das und wie bringe ich diese Funktion nun zum laufen?

Danke schonmal im vorraus

  1. Was heißt das und wie bringe ich diese Funktion nun zum laufen?

    Rück' deinen Code mal ordentlich ein, dann sollte dir schnell auffallen, dass da ein Strichpunkt zu viel ist.

    1. Hi!

      Rück' deinen Code mal ordentlich ein, dann sollte dir schnell auffallen, dass da ein Strichpunkt zu viel ist.

      Der hinter dem for-Schleifen-Körper-Ende? Der ist zwar überflüssig, aber er stört niemanden. Damit ergibt sich nur eine leere Anweisung. Davon kann man beliebig viele notieren.

      Das eigentliche Problem ist nicht nachvollziehbar, weil außer dem falschen Laufindex kein Fehler zu sehen ist. Die angemeckerte Klammer muss woanders sitzen.

      Lo!

  2. function addieren(Kosten) {
      var erg = 0;
      for (i=1; i <= 12; i++) {
        erg = erg + Kosten[i]; };
      alert(erg);
      return erg;
      };

    
    >   
    > Das dazugehörige Array:  
    > `Kosten = new Array(40, 25, 8, 32.98, 11, 32, 9.9, 53.94, 87);`{:.language-javascript}  
    >   
      
    Dein Array \_Kosten\_ hat nur 9 Elemente, und von Nummerierung bei Arrays beginnt mit 0, also:  
      
    `for (var i = 0; 1 <= 8; i++) {`{:.language-javascript}  
    etc.  
      
    Gruß H.
    
    1. Hallo herrmann,

      for (var i = 0; 1 <= 8; i++)

      oder besser

      for (var i=0; i<Kosten.length; i++)

      Gruß, Jürgen

      1. Hallo herrmann,

        for (var i = 0; 1 <= 8; i++)

        oder besser

        for (var i=0; i<Kosten.length; i++)

        Gruß, Jürgen

        Hm habs ausprobiert leider kein Erfolg :(

      2. Hi,

        Hallo herrmann,

        for (var i = 0; 1 <= 8; i++)

        oder besser

        for (var i=0; i<Kosten.length; i++)

        oder besser
        for (var i=0, len = Kosten.length; i<len; ++i) { }

        Durch das zwischenspeichern der Array-Länge wird nicht jedem Schleifendurchlauf die Methode length() aufgerufen.

        Weiterhin wichtig zu erwähnen (im Vergleich zur Ausgangsschleife):
         - das Deklarieren des Schleifenzählers mit var als lokale Variable, um nicht aus Versehen globale Variablen zu überschreiben
         - der Unterschied von ++i und i++ sollte hingegen vom JS-Compiler wegoptimiert werden können

        Bis die Tage,
        Matti

        1. Durch das zwischenspeichern der Array-Länge wird nicht jedem Schleifendurchlauf die Methode length() aufgerufen.

          Weiterhin wichtig zu erwähnen (im Vergleich zur Ausgangsschleife):

          • das Deklarieren des Schleifenzählers mit var als lokale Variable, um nicht aus Versehen globale Variablen zu überschreiben
          • der Unterschied von ++i und i++ sollte hingegen vom JS-Compiler wegoptimiert werden können

          Bis die Tage,
          Matti

          danke für die antwort aber auch das hat leider nicht funktioniert :(

          1. Hi,

            danke für die antwort aber auch das hat leider nicht funktioniert :(

            Bitte berücksichtige die Tipps für Fragende, und erspare uns weitere „funzt nich“-Postings, die so gut wie keinerlei Aussagekraft haben, weil sie keinerlei brauchbare Information enthalten.

            MfG ChrisB

            --
            RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
  3. Du hast ein Semikolon zu viel in deinem Code.

    Nach geschweiften Klammern musst du kein Semikolon mehr setzen. Tipp: Rücke den Text ordentlich ein, dann fällt dir sowas besser auf:

      
    function addieren(Kosten) {  
       var erg = 0;  
       for (i=1; i <= 12; i++) {  
         erg = erg + Kosten[i];  
       }  
      alert(erg);  
      return erg;  
    };  
    
    

    Grüße, skiddo

    1. Du hast ein Semikolon zu viel in deinem Code.

      Nach geschweiften Klammern musst du kein Semikolon mehr setzen. Tipp: Rücke den Text ordentlich ein, dann fällt dir sowas besser auf:

      Das könnte von mir stammen :D

    2. Du hast ein Semikolon zu viel in deinem Code.

      Nach geschweiften Klammern musst du kein Semikolon mehr setzen. Tipp: Rücke den Text ordentlich ein, dann fällt dir sowas besser auf:

      function addieren(Kosten) {
         var erg = 0;
         for (i=1; i <= 12; i++) {
           erg = erg + Kosten[i];
         }
        alert(erg);
        return erg;
      };

        
      Richtig, da ist ein überflüssiges Semikolon. Ein Syntaxfehler ist das aber nicht! »;« ist einfach eine leere Anweisung. Davon kann man beliebig viele zwischen Statements einstreuen. Die Ursache des Syntaxfehlers muss woanders liegen.  
        
      Mathias
      
      1. Richtig, da ist ein überflüssiges Semikolon. Ein Syntaxfehler ist das aber nicht! »;« ist einfach eine leere Anweisung. Davon kann man beliebig viele zwischen Statements einstreuen. Die Ursache des Syntaxfehlers muss woanders liegen.

        Déjà-vu déjà-vu :)

  4. [latex]Mae  govannen![/latex]

    Kosten = new Array(40, 25, 8, 32.98, 11, 32, 9.9, 53.94, 87);

    function addieren(val1, val2) {  
        return val1 + val2;  
    }  
      
    var summe = Kosten.reduce(addieren);
    

    Für alte Browser noch den Ersatzcode einfügen und gut ist.

    Danke schonmal im vorraus

    gerrrrn.

    Stur lächeln und winken, Männer!
    Kai

    --
    Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken
    in Richtung "Mess up the Web".(suit)
    SelfHTML-Forum-Stylesheet