online 1
gast (50)

/ Forum / Webseiten/HTML

Webseiten/HTMLWebseiten/HTML

Fragevon Computerfreaki vom 03.06.2020, 18:21 Options

Javascript Schleifenproblem

Hier ist mein Skript:

<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++;
	}
}


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.

<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;
}


Hier das Formular:

<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>


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 schreiben

Antwort 1 von katy vom 03.06.2020, 20:59 Options

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
  • Antwort 2 von Computerfreaki vom 03.06.2020, 21:16 Options

    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

    Antwort 3 von katy vom 03.06.2020, 22:58 Options

    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

    Antwort 4 von Dr.Ma-Busen vom 04.06.2020, 01:14 Options

    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?

    Antwort 5 von Computerfreaki vom 04.06.2020, 07:29 Options

    @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

    Antwort 6 von son_quatsch vom 04.06.2020, 10:00 Options

    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 vom 04.06.2020, 15:51 Options

    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:

    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 vom 04.06.2020, 16:44 Options

    Na endlich, geht doch. ;-)

    Dankschön so hab ich mir das vorgestellt

    Antwort 9 von Computerfreaki vom 04.06.2020, 16:48 Options

    Vielen Dank auch an son_quatsch für die viele Mühe.

    Antwort 10 von katy vom 05.06.2020, 06:50 Options

    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

    Antwort 11 von Computerfreaki vom 05.06.2020, 13:41 Options

    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.

    Ähnliche Themen

    Javascript
    tomkat  08.07.2007 - 200 Hits - 2 Antworten

    javascript:void(0);
    Flashback2581  12.08.2007 - 774 Hits - 3 Antworten

    javascript
    börny  15.11.2007 - 123 Hits - 5 Antworten

    HTML-Tag mit Javascript hinzufügen
    Computerfreaki  11.05.2008 - 109 Hits - 10 Antworten

    wie macht man mit Javascript aus vorher festgelegten wörtern links?
    nympseudo  06.07.2008 - 124 Hits - 10 Antworten

    Hinweis

    Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

    Neue Einträge

    Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026