Flo: For-Schleife

Hallo!

Wie geht denn so was:

Ich habe z.B. 15 Variablen mit den Namen Frage1, Frage2, etc.

Jetzt möchte ich Frage1 bis Frage15 zusammenzählen. Ich hatte mir das so vorgestellt:

for(i = 1; i <= 15; i++)
{
var total = frage[i] + frage[i+1];
alert(total);
}

Ihr habt inzwischen wohl schon gemerkt, dass ich ein totaler JavaScript-Anfänger bin...also verkneift euch die giftigen Kommentare ;-)

Vielen Dank für eure Hilfe.

Flo

  1. Hallo Flo

    Ich habe z.B. 15 Variablen mit den Namen Frage1, Frage2, etc.

    Die sollten besster gleich als Array definiert sein:

    Fragen = new Array("wie alt? ","wie gross? ","welches Geschlecht? ","warum hier? "); /* usw. 15 Fragen in der Klammer */

    Bei 15 Fragen lassen sich die Fragen dann einzeln ansprechen mit:
    Fragen[0] bis Fragen[14]

    Jetzt möchte ich Frage1 bis Frage15 zusammenzählen. Ich hatte mir das so vorgestellt:
    for(i = 1; i <= 15; i++)

    »»  {
    »»  var total = frage[i] + frage[i+1];
    »»  alert(total);
    »»  }

    Den Sinn dieser Schleife verstehe ich zwar nicht, aber nach obiger Array-Definition wuerde es so lauten:

    for(i = 0; i < 13; i++)
    {
      var total = frage[i] + frage[i+1];
      alert(total);
    }

    Hilft das?

    viele Gruesse
      Stefan Muenz

    1. Super!

      Für meine Anwendung war es sogar noch einfacher:

      Fragen = new Array(15);
      Fragen[0] = eval(zahl.slice(0,1));
      Fragen[1] = eval(zahl.slice(1,2));
      Fragen[2] = eval(zahl.slice(2,3));
      Fragen[3] = eval(zahl.slice(3,4));
      Fragen[4] = eval(zahl.slice(4,5));
      Fragen[5] = eval(zahl.slice(5,6));
      Fragen[6] = eval(zahl.slice(6,7));
      Fragen[7] = eval(zahl.slice(7,8));
      Fragen[8] = eval(zahl.slice(8,9));
      Fragen[9] = eval(zahl.slice(9,10));
      Fragen[10] = eval(zahl.slice(10,11));
      Fragen[11] = eval(zahl.slice(11,12));
      Fragen[12] = eval(zahl.slice(12,13));
      Fragen[13] = eval(zahl.slice(13,14));
      Fragen[14] = eval(zahl.slice(14,15));

      for(i = 0; i < 13; i++)
      {
        var total = total + Fragen[i];
        alert(total);
      }

      alert(total);  
      
      if (total > 52)  
      

      self.location.href="Auswert53.htm"
        else
      if (total > 37)
        self.location.href="Auswert38.htm"
        else
      if (total > 22)
        self.location.href="Auswert23.htm"
        else
      if (total > 7)
        self.location.href="Auswert8.htm"
      else
        self.location.href="Auswert0.htm";
      }

      Danke Stefan

      1. Hallo Flo,
        hier noch ein paar kleine Verbesserungen, um das ganze noch etwas besser lesbar und wartbar zu gestallten:

        Fragen = new Array(15);

        »»  Fragen[0] = eval(zahl.slice(0,1));
        »»  Fragen[1] = eval(zahl.slice(1,2));
        »»  Fragen[2] = eval(zahl.slice(2,3));
        »»  Fragen[3] = eval(zahl.slice(3,4));
        »»  Fragen[4] = eval(zahl.slice(4,5));
        »»  Fragen[5] = eval(zahl.slice(5,6));
        »»  Fragen[6] = eval(zahl.slice(6,7));
        »»  Fragen[7] = eval(zahl.slice(7,8));
        »»  Fragen[8] = eval(zahl.slice(8,9));
        »»  Fragen[9] = eval(zahl.slice(9,10));
        »»  Fragen[10] = eval(zahl.slice(10,11));
        »»  Fragen[11] = eval(zahl.slice(11,12));
        »»  Fragen[12] = eval(zahl.slice(12,13));
        »»  Fragen[13] = eval(zahl.slice(13,14));
        »»  Fragen[14] = eval(zahl.slice(14,15));
        Kann man auch so ausdruecken:
        var i=0;
        var Fragen = new Array(15);
        for(i = 0; i <= 14; i++)
        {
          Fragen[i] = eval(zahl.slice(i,i + 1));
        }

        for(i = 0; i < 13; i++)
        {
          var total = total + Fragen[i];
          alert(total);
        }

        Hier erwischst Du die letzten beiden Fragen nicht, wenn Du die auch noch mit drin haben willst solltest Du  "for(i = 0; i <= 14; i++)" schreiben.

        Bis dann,
        Michael N.

        1. Kann man auch so ausdruecken:
          var i=0;
          var Fragen = new Array(15);
          for(i = 0; i <= 14; i++)
          {
            Fragen[i] = eval(zahl.slice(i,i + 1));
          }

          for(i = 0; i < 13; i++)
          {
            var total = total + Fragen[i];
            alert(total);
          }

          Danke! Sieht einiges professioneller aus.

          Hier erwischst Du die letzten beiden Fragen nicht, wenn Du die auch noch mit drin haben willst solltest Du  "for(i = 0; i <= 14; i++)" schreiben.

          Das hatte ich inzwischen auch gemerkt, danke :-)

  2. Ich habe z.B. 15 Variablen mit den Namen Frage1, Frage2, etc.

    Jetzt möchte ich Frage1 bis Frage15 zusammenzählen. Ich hatte mir das so vorgestellt:

    for(i = 1; i <= 15; i++)

    »»  {
    »»  var total = frage[i] + frage[i+1];
    »»  alert(total);
    »»  }

    Hallo,

    obiges Script sollte nicht ganz funktionieren :-)
    1. Ist die Variable frage als Array definiert ?
    2. Beginnen Arrays in JS mit dem Index 0. Daher muss der Anfangwert fuer i in der for-Schleife = 0 sein.
    (und der Endwert natuerlich 14).
    3. Im Schleifenrumpf soll ja bei jedem Durchlauf der Inhalt von frage[i] aufaddiert werden.
    Daher muss die Anweisung lauten: total += frage[i];
    Vor der Ausfuehrung der Schleife sollte dann total
    aber auf jeden Fall noch mit 0 initialisiert werden.
    (4. Alert steht wohl besser ausserhalb der Schleife :-)

    bis denn
    Thomas

    1. Auch dir vielen Dank, ich habe es inzwischen geschafft (siehe meine Antwort bei Stefan).