For-Schleife
Flo
- javascript
0 Stefan Muenz0 Flo0 Michael N.0 Flo
0 Thomas Geipel0 Flo
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
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
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
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.
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 :-)
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
Auch dir vielen Dank, ich habe es inzwischen geschafft (siehe meine Antwort bei Stefan).