JavaScript Rechentrainer Schulaufgabe?
<html>
<head>
<title> Kopfrechentrainer </title>
</head>
<body>
<script language=javascript>
{ var a;
var b;
var c;
var d;
var f=0;
var r=0;
}
function random()
{
a=Math.floor(Math.random()*90)+10;
document.rechnen.eingabe1.value=a;
b=Math.floor(Math.random()*9)+1;
document.rechnen.eingabe2.value=b;
}
function kontrolle()
{
if(onclick=kontrolle){onclick=random}
c=document.rechnen.vergleich.value;
if(a*b==c){r++;document.rechnen.richtig.value=""+r}
if(a*b!=c){f++;document.rechnen.falsch.value=""+f}
if(r+f==5)
{
if(r==0){alert('oh, das war garnichts, übe noch einmal')}
if(r==1){alert('du musst noch einaml üben')}
if(r==2){alert('da geht noch mehr')}
if(r==3){alert('du solltest och etwas üben')}
if(r==4){alert('das nächste mal vielleicht')}
if(r==5){alert('sehr gut, du hast alle Aufgaben richtig gelöst')}
}
if(r+f==5){onclick=zurück}
}
function zurück()
{
document.rechnen.richtig.value=""
document.rechnen.falsch.value=""
}
</script>
<font color ="red"> <h2 align = center> Kopfrechentrainer </h2> </font>
<br>
<p align = center> <b>
Du kannst hier Multiplikationsaufgaben üben. <br>
Beim Klicken auf den Button werden dir dir nacheinander 5 Aufgaben gestellt.
</p> </b>
<br>
<br>
<h1 align = center> Bereit? </h1>
<br>
<form name="rechnen" p align = center>
<input type=button value="Start" onclick=random()>
<br> <br>
<INPUT type=text name=eingabe1 value=""> *
<INPUT type=text name=eingabe2 value=""> =
<INPUT type=text name=vergleich value="">
<input type=button value="Kontrolle" onclick=kontrolle()>
<br> <br>
<p align = center> <b>
Richtig gelöst <------------> Falsch gelöst
</b>
<br> <br>
<INPUT type=text name=richtig value="">
<INPUT type=text name=falsch value="">
<br> <br>
</form /p>>
</body>
</html>
An sich Funktioniert erstmal alles so wie es soll, jedoch besteht das Problem darin das wenn ich in das Textfeld um ein neues Ergebnis einzutragen gehe, dann wird eine neue Aufgabe erstellt obwohl ich nicht auf den Button Kontrolle geklickt habe.
Ich hoffe jemand kann mir helfen, vielen dank.
2 Antworten
Die Variable onclick bezieht sich auf das globale Kontextobjekt window.
Generell macht dieser Abschnitt:
if (onclick = kontrolle) {
onclick = random
}
nicht viel Sinn. Lass am besten alles mit onclick raus und rufe am Ende der Kontrollfunktion einfach nur random auf, um neue Werte für eine neue Aufgabe zu generieren.
Unverständlich finde ich ebenso, wieso du all die Fehler, die ich dir schon bei deiner letzten Frage allesamt aufgelistet habe, beibehältst. So schwer ist es doch nicht, sie zu beheben.
Lass am besten alles mit onclick raus
Das ist auf deine gesamte Funktion kontrolle bezogen. Die Funktionen random und zurück kannst du an den entsprechenden Stellen direkt aufrufen oder du erstellst weitere Buttons, deren onclick-Attribute du an die Funktionen bindest. Oder du legst dir eine globale Variable an, die stets die Aktion anzeigt, die beim nächsten Klick auf den Kontrollbutton geschehen soll. Am Anfang der Kontrollfunktion prüfst du dann den Zustand via if-else oder switch-case.
<input type=button value="Start" onclick=random()>
<input type=button value="Kontrolle" onclick=kontrolle()>
Deswegen, dort ist überall ein Onclick im Input Feld das irgendeine Funktion ausführt wenn du schon auf Start gedrückt hast.
Und bitte räum den Code auf.
Das ist furchtbar, wenn du willst mache ich dir dasselbe in sauberer.
Die Fehler kennt er alle schon. Wie er sie beheben kann, habe ich ihm ebenfalls bereits geschrieben.
Die Funktionsaufrufe in den Buttons sind übrigens so richtig. Es geht darum, dass Aktionen ausgeführt werden, auch wenn nicht auf den Kontrollbutton geklickt wird.
Ich habe immer noch das Problem das ich nicht weiß wie ich nun festlegen kann das sich das nicht ändert, wie muss ich das nun machen?