onclick bezug auf funktion geht nicht
Takeo
- javascript
0 Beat0 EKKi0 Christian S.
hi leute,
Ich habe ein simples problem bei der erstellung eines multiplikationsprogramms, aber werde nicht fündig:
das programm sollte sich von selbst erklären:
der pc generiert 2 zahlen (a und b) zwischen 1 und 100 und multipliziert diese miteinander
der besucher wird aufgefordert, dies selbst zu rechnen und die lösung einzutippen. (Danach erfolgt der Klick auf den Button)
DIESER BUTTON SOLL DIE FUNKTION check() AUSFÜHREN.
aber da liegt das problem...aus irgendeinem grund will die funktion nicht starten... ich habe den document.write() teil in der funktion multiplikation() im verdacht. ich glaube, ich hab da was falsch gemacht, aber laut den internetseiten ist das so richtig Oo
hoffe auf schnelle hilfe!
hier ist der code (l und k sind zähler von "richtig" und "falsch"):
function multiplikation() {
var l = 0;
var k = 0;
var a = Math.round(Math.random()*100);
var b = Math.round(Math.random()*100);
document.write("<form name='multipl'>" + a + " * " + b + " = "+ "<input type='text' name='Eingabe'>"+ "<input type='button' name='button' onclick='check()' value='Check!'>"+ "</form>");
}
function check() {
var c = multipl.Eingabe.value;
if(c=a*b) {
var l = l+1;
document.write("Richtig! (" + l + "Richtige/ " + k +"Falsche)</br>");
multiplikation;
}else {
var k=k+1;
document.write("Falsch! (" + l + "Richtige/ " + k +"Falsche)</br>");
multiplikation;
}
}
if(c=a*b) { <-----
korrigier das mal
mfg Beat
Mahlzeit,
hier ist der code (l und k sind zähler von "richtig" und "falsch"):
Wow ... es geht doch nichts über sprechende Variablennamen. Wieso hast Du sie nicht "hokuspokus" und "schnarzpideltroet" genannt? Oder gar - Achtung, jetzt kommt eine vollkommen irre Idee! - einfach "richtige" und "falsche"?
function multiplikation() {
var l = 0;
var k = 0;
Das sind beides lokale Variablen - ich wüsste nicht, wie Du diese in der Funktion "check" hochzählen willst ...
var a = Math.round(Math.random()*100);
Da war doch irgendwas mit Math.round? (Nutze das Forumsarchiv!)
var c = multipl.Eingabe.value;
Was genau soll Deiner Meinung nach das Objekt "multipl" sein?
if(c=a*b) {
Hier weist Du der Variablen "c" den Wert der Multiplikation von a*b zu. Ich denke nicht, dass Du das willst.
var l = l+1;
Ich denke nicht, dass Du in dieser Funktion Zugriff auf die lokalen Variablen einer anderen Funktion hast (s.o.).
Überdenke Dein gesamtes Konzept!
<script type="text/javascript">
[code lang=javascript]
var aufgaben = 0;
var richtige = 0;
var falsche = 0;
function multiplikation() {
var a = Math.floor(Math.random() * 100) + 1;
var b = Math.floor(Math.random() * 100) + 1;
document.write('<form name="multipl' + aufgaben + '">' + a + ' * ' + b + ' = ' + '<input type="text" name="Eingabe">' + '<input type="button" name="button" onclick="check(this);" value="Check!">' + '<\/form>');
}
function check(obj) {
var c = parseFloat(obj.parentNode.getElementsByName('Eingabe')[0].value);
if (c == a * b) {
richtige++;
document.write('Richtig!');
} else {
falsche++;
document.write('Falsch!');
}
aufgaben++;
document.write(' (' + richtige + ' Richtige \/ ' + falsche + ' Falsche)<br>');
multiplikation();
}
}
</script>[/code]
MfG,
EKKi
Hi,
document.write("<form name='multipl'>" + a + " * " + b + " = "+ "<input type='text' name='Eingabe'>"+ "<input type='button' name='button' onclick='check()' value='Check!'>"+ "</form>");
ich verstehe nicht, wieso leute in zeiten vom DOM immer noch mit document.write arbeiten, und einen wilden mischmasch aus JavaScript und HTML-Code der wiederrum JavaScript enthält, produzieren.
Vielleicht geht dadurch auch schon was schief. Vielleicht werden Events, die so (durch eben diesen Mischmasch), in das Dokument eingefügt werden, nicht erkannt. Aber kA.
Gruß!