Supportnet / Forum / Webseiten/HTML
Javascript Schleifenproblem
Frage
Hier ist mein Skript:
[code]
<script language="JavaScript">
function rech() {
faktor = document.rechner.faktor.value;
anz = document.rechner.anz.value;
if (isNaN(anz)) {
alert ("Bitte Zahl eingeben");
while(i <= anzahl) {
faktor *= i;
document.rechner.erg.value = faktor;
i++;
}
}
[/code]
Ich hab schon ein Formular mit Feldern usw. erstellt. Bis jetzt hat auch alles funktioniert.
Das ist mein vorheriger Skript (nur als Beispiel):
Hier werden die Zahlen aus den Feldern faktor und anzahl addiert und dann im Feld erg ausgegeben.
[code]
<script language="JavaScript">
function rech() {
faktor = document.rechner.faktor.value;
anz = document.rechner.anz.value;
if (isNaN(anz)) {
alert ("Bitte Zahl eingeben");
}
erg = parseInt(faktor) + parseInt(anz);
document.rechner.erg.value = erg;
}
[/code]
Hier das Formular:
[code]
<form name="rechner" >
<table align="center" border="2">
<tr>
<td width="150px" align="center" style="border-style:solid;border-color:#f00;border-width:thin;">Faktor:</td>
<td width="150px" align="center" style="border-style:solid;border-color:#f00;border-width:thin;">
<input type="text" name="faktor" maxlength="3" size="3"></td>
</tr>
<tr>
<td width="150px" align="center" style="border-style:solid;border-color:#f00;border-width:thin;">Anzahl:</td>
<td align="center" width="150px" style="border-style:solid;border-color:#f00;border-width:thin;">
<input type="text" name="anz" size="3" maxlength="3"></td>
</tr>
<tr>
<td width="300px" align="center" style="border-style:solid;border-color:#f00;border-width:thin;" colspan="2">
<input type="text" name="erg" readonly></td>
</tr>
<tr>
<td width="300px" align="center" style="border-style:solid;border-color:#f00;border-width:thin;" colspan="2">
<input type="button" value="Ausrechnen" onclick="rech()"></td>
</tr>
</table>
</form>
[/code]
So, im oberen Skript möchte ich jetzt das eine Schleife immer die Variable Faktor so oft mit den Zahlen (1-10) malnimmt bis die Variable Anzahl erreicht ist.
Antwort 1 von katy
Hallo Computerfreaki,
ich sehe nur ein paar Skripte und einen Wunsch, aber ich sehe überhaupt nicht, was eigentlich deine Frage bzw. dein Problem ist.
Allerdings könnte ich dir ein paar Sachen ans Herz legen, die leicht Probleme bereiten:
nutze in Funktionen lokale Variablen
verwende niemals die gleiche Bezeichnung für name-Attribute oder IDs im HTML und Variablen (oder andere Objekte) in JavaScript. Manche Browser kommen damit durcheinander.
ersetze in <script> das (in aktuellem HTML nicht mehr zulässige) language="javascript" durch das vorgeschriebene type="text/javascript"
katy
ich sehe nur ein paar Skripte und einen Wunsch, aber ich sehe überhaupt nicht, was eigentlich deine Frage bzw. dein Problem ist.
Allerdings könnte ich dir ein paar Sachen ans Herz legen, die leicht Probleme bereiten:
katy
Antwort 2 von Computerfreaki
Ich möchte einen sogenannten 1 mal 1 - Rechner erstellen.
Der Besucher gibt eine Zahl ein die dann mit der Anzahl aus dem nächsten Formular malgenommen werden soll.
Hier mal ein Beispiel:
Formularfeld 1 (Faktor):
6
Formularfeld 2 (Anzahl):
4
Ausgegeben soll dann:
6
12
18
24
Also die Zahl 6 mit den Zahlen 1 - 4 malgenommen
Der Besucher gibt eine Zahl ein die dann mit der Anzahl aus dem nächsten Formular malgenommen werden soll.
Hier mal ein Beispiel:
Formularfeld 1 (Faktor):
6
Formularfeld 2 (Anzahl):
4
Ausgegeben soll dann:
6
12
18
24
Also die Zahl 6 mit den Zahlen 1 - 4 malgenommen
Antwort 3 von katy
Hallo Computerfreaki,
das bringt mich nicht weiter.
Soll ich dein Posting so verstehen, dass du einfach nicht weißt wie man(n) sowas programmiert? Da könnte ich dir ja den Tipp geben, dass 6*4 bedeutet:
addiere 6+6+6+6
Oder wo hakt es?
katy
das bringt mich nicht weiter.
Soll ich dein Posting so verstehen, dass du einfach nicht weißt wie man(n) sowas programmiert? Da könnte ich dir ja den Tipp geben, dass 6*4 bedeutet:
addiere 6+6+6+6
Oder wo hakt es?
katy
Antwort 4 von Dr.Ma-Busen
Moin!
Hast du beim Kopieren des Scriptes mit der schleife in das Forum hier eine fehler gemacht, oder ist das wirklich dein Script?
Schau dir das Script noch mal genau an.
Besonders die IF-Abfrage, du prüfst isNaN(anz). Wenn anz also keine Zahl ist dann soll die schleife ausgeführt werden?
Dann Zählst du in der Schleife mit der Laufvariable i, aber wo hast du die Deklariert? Und wo kommt die Variable anzahl her?
Hast du beim Kopieren des Scriptes mit der schleife in das Forum hier eine fehler gemacht, oder ist das wirklich dein Script?
Schau dir das Script noch mal genau an.
Besonders die IF-Abfrage, du prüfst isNaN(anz). Wenn anz also keine Zahl ist dann soll die schleife ausgeführt werden?
Dann Zählst du in der Schleife mit der Laufvariable i, aber wo hast du die Deklariert? Und wo kommt die Variable anzahl her?
Antwort 5 von Computerfreaki
@Katy (Antwort 3)
Da oben in Antwort zwei steht doch alles.
Das möchte ich irgendwie hinbekommen. Bloß bekomme ich es nicht hin. Deshalb brauch ich ja deine Hilfe
Da oben in Antwort zwei steht doch alles.
Das möchte ich irgendwie hinbekommen. Bloß bekomme ich es nicht hin. Deshalb brauch ich ja deine Hilfe
Antwort 6 von son_quatsch
Also, möchtest du folgendes?
<html><head>
<title>Rechner</title>
<script type="text/javascript">
function rech() {
var iFaktor= document.getElementById( 'faktor' ).value; // Wert aus Element "faktor" auslesen
var iAnz= document.getElementById( 'anz' ).value; // Wert aus Element "anz" auslesen
if ( isNaN( iAnz )|| isNaN( iFaktor ) ) { // iAnz oder iFaktor ist keine Zahl?
alert( 'Bitte Zahl eingeben' ); // Meldung anzeigen
return false; // ...und Funktion verlassen
}
iFaktor= parseInt( iFaktor ); // in Zahl umwandeln
iAnz= parseInt( iAnz );
var sErg= ''; // Ergebnistext vorbereiten
for ( var i= 1; i<= iAnz; i++ ) sErg+= ( iFaktor* i )+ '\n'; // von 1 bis iAnz je eine Ergebniszeile hinzufügen
document.getElementById( 'erg' ).value= sErg; // Ergebnistext zuweisen
return true;
}
</script>
<style type="text/css">
table {
border: 2px;
text-align: center;
}
td {
border: thin solid #f00;
text-align: center;
}
</style>
</head><body>
<form name="rechner">
<table><tr>
<td width="150px">Faktor:</td>
<td width="150px"><input type="text" id="faktor" maxlength="3" size="3"></td>
</tr><tr>
<td width="150px">Anzahl:</td>
<td width="150px"><input type="text" id="anz" size="3" maxlength="3"></td>
</tr><tr>
<td width="300px" colspan="2"><textarea rows="10" id="erg" readonly></textarea></td>
</tr><tr>
<td width="300px" colspan="2"><input type="button" value="Ausrechnen" onclick="rech()"></td>
</tr></table>
</form>
</body></html>Antwort 7 von katy
Hallo Computerfreaki,
sorry, wenn ich dich missverstehe, aber ich dachte das soll eine Programmierübung werden.
wenn du nur einen Algorhitmus zum Ausrechenn der Zahlen haben willst, ist das hier einfacher als das mühsame Multiplizieren in deinem und son_quatschens Ansatz:
wobei trenner eine Variable ist, der du übergibst, wie die Zeilen vonenander getrennt sein sollen in der Ausgabe. Die Rückgabe kannst du dann entsprechend ausgeben.
übrigens lässt sich die komplizierte Prüfung auf Zahleneingaben reduzieren auf
Fehleingaben ergeben hier einfach den Wert 0.
Nach wie vor weiß ich aber nicht, wo du nicht weiter kommst.
katy
sorry, wenn ich dich missverstehe, aber ich dachte das soll eine Programmierübung werden.
wenn du nur einen Algorhitmus zum Ausrechenn der Zahlen haben willst, ist das hier einfacher als das mühsame Multiplizieren in deinem und son_quatschens Ansatz:
function tafel_van_x(x,n,trenner) {
aus="";
for (var t=x; t<=n*x; t+=x) {
aus+=t+trenner;
}
return aus;
}wobei trenner eine Variable ist, der du übergibst, wie die Zeilen vonenander getrennt sein sollen in der Ausgabe. Die Rückgabe kannst du dann entsprechend ausgeben.
übrigens lässt sich die komplizierte Prüfung auf Zahleneingaben reduzieren auf
var iAnz = parseInt("0"+document.getElementById( 'anz' ).value,10);
Fehleingaben ergeben hier einfach den Wert 0.
Nach wie vor weiß ich aber nicht, wo du nicht weiter kommst.
katy
Antwort 8 von Computerfreaki
Na endlich, geht doch. ;-)
Dankschön so hab ich mir das vorgestellt
Dankschön so hab ich mir das vorgestellt
Antwort 9 von Computerfreaki
Vielen Dank auch an son_quatsch für die viele Mühe.
Antwort 10 von katy
bitte ergänzt das var in der Funktion in Antwort 7. Dessen Fehlen ist mir geradezu peinlich!
Hallo Computerfreaki,
schön dass du dich darüber freuen kannst. Wie wäre es aber, wenn du Nachfragen wie: Was willst du eigentlich? beantworten könntest. Wenn es - wie von mir bislang vermutet - eine Programmierübung war, war dein Abschneiden ja nicht so toll, denn meinen Ansatz aus Antwort 7 in JavaScript umzusetzen sollte selbst für Anfänger nicht so schwierig sein.
Eine praktische Anwendung für sowas kann ich mir gar nicht vorstellen.
katy
Hallo Computerfreaki,
schön dass du dich darüber freuen kannst. Wie wäre es aber, wenn du Nachfragen wie: Was willst du eigentlich? beantworten könntest. Wenn es - wie von mir bislang vermutet - eine Programmierübung war, war dein Abschneiden ja nicht so toll, denn meinen Ansatz aus Antwort 7 in JavaScript umzusetzen sollte selbst für Anfänger nicht so schwierig sein.
Eine praktische Anwendung für sowas kann ich mir gar nicht vorstellen.
katy
Antwort 11 von Computerfreaki
Das sollte keine Programmierübung sein. Ich habe nur Hilfe gebraucht, weil ich nicht weitergekommen bin. Dafür ist ja schließlich das Supportnet da.

