• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Einfaches Script, was ist falsch?

Tom852

Neues Mitglied
Hallo, mache gerade meine ersten lieben Erfahrungen mit Java. Es geht um einfache Berechnungen, wir haben 4 inputs und 4 Zahlen sollen wieder ausgegeben werden.
Ich hab mir das mit ein paar Tutorials und Beispielen so zusammengebastelt, aber es funzt jetzt noch nicht, und ich bin ein bisschen am Ende meiner Kräfte :)

Code:
<html>
<head>
<title>Dial Calculator</title>
</head>
<body>
<br>
This site calculates how you can solve the dials in 4 steps.<br>
This works for any input / starting combination.<br>
The target combination is 2-7-4-6.<br><br><br><br>


<form name="inputs" onsubmit="return calc()">

<table cellpadding="2" cellspacing="2" border="0" style="text-align: left; width: 300px;" >
<tbody>

<tr>
<td>Initial <b><font color="#FFFF00">yellow</font></b> (top floor) number:</td>
<td><input type="text" size="2" name="y" value=""></td>
</tr>

<tr>
<td>Initial <b><font color="#FF8000">orange</font></b> (2nd floor) number:</td>
<td><input type="text" size="2" name="o" value=""></td>
</tr>

<tr>
<td>Initial <b><font color="#0000FF">blue</font></b> (3rd floor) number:</td>
<td><input type="text" size="2" name="b" value=""></td>
</tr>

<tr>
<td>Initial <b><font color="#FF00FF">purple</font></b> (bottom floor) number:</td>
<td><input type="text" size="2" name="p" value=""></td>
</tr>



<tr>
<td><br><br><input type="submit">
    <br><br><input type="reset"</td>
</tr>


</tbody>
</table>

</form>





<script type="text/javascript">
<!---

function calc()
{
 //input check

 res = true;

 y = document.inputs.y.value;
 o = document.inputs.o.value;
 b = document.inputs.b.value;
 p = document.inputs.p.value;

 if(y < 0 || y > 9){res = false;}
 if(o < 0 || o > 9){res = false;}
 if(b < 0 || b > 9){res = false;}
 if(p < 0 || p > 9){res = false;}

 if(res == false){alert('Wrong input format');
                  return;}


 //calculation

 resy = 4 - y + b - p;
 reso = -2 - b + p;
 resb = 5 - o + y;
 resp = 1 - p + o - y;

 document.writeln("Hit yellow " + resy " times");
 document.writeln("Hit orange " + reso " times");
 document.writeln("Hit blue "   + resb " times");
 document.writeln("Hit purple " + resp " times");

 return;
}

//-->
</script>


</body></html>
falls das hier quatsch ist mit javascript bin ich ansonsten auch für alternative lösungen offen.
 
Zuletzt bearbeitet:
Werbung:
Du schreibst nicht Java sondern JavaScript. Bitte beachte diesen Unterschied, das sind 2 Welten.

Worin besteht denn das Problem? Ich rate mal: das Formular wird abgeschickt, das JavaScript scheinbar nicht ausgeführt, oder? Das könnte daran liegen, dass in der JavaScript-Funktion am Ende

Code:
return;

steht. Um das Abschicken des Formulars zu verhindern, müsste dort aber

Code:
return false;

stehen.

Sollte das Problem ein anderes sein, beschreib es bitte genauer.
 
JavaScript selbstverständlich, entschuldige den Fehler.

Ich habs nun in das "return false;" geändert. Weiter hab ich diesen Fehler hier gefunden:
Code:
 document.writeln("Hit yellow " + resy " times");
statt
Code:
 document.writeln("Hit yellow " + resy + " times");

Jetzt geht es fast schon :)

Der Alert wird ausgeführt, und der Output ist so etwas hier:
Hit yellow 20 times Hit orange -75 times Hit blue 02 times Hit purple -47 times
Die Zeilenabstände werd ich noch hinkriegen, was mich beunruhigt ist aber das total falsche Resultat :) Das müsste Zahlen zwischen -10 und 20 geben. Und der soll mir 2 schreiben, nicht 02. Aber ich kuck ma selbst.
 
Zuletzt bearbeitet:
Werbung:
Das könnte daran liegen, dass Werte aus input-Feldern als String gewertet werden. Wandel sie erstmal mit parseInt() in einen Integer-Wert um, dann kannst Du auch damit leicht rechnen.

Weitere JavaScript-Fehler sollte dir die JavaScript-Konsole Deines Browsers verraten.
 
Also, ich versteh das wirklich nich. Ich hab jetzt die Zeilen
Code:
parseInt(y);
parseInt(o);
parseInt(b);
parseInt(p);
drin.

Gebe ich zum Test diese Variablen aus, sieht das auch gut aus.

Aber der rechnet mir einfach nicht korrekt in diesen Zeilen hier:
Code:
 resy = 4 - y + b - p;
 reso = -2 - b + p;
 resb = 5 - o + y;
 resp = 1 - p + o - y;

Was ist da los? Das ist doch in jeder Programmiersprache so ziemlich das grundlegendste. reso = -2 - b + p = -2 - 3 + 4, wie kann man da auf -54 kommen??? Tja, man rechne -2 - 3, da ist die -5, und dann noch die 4 hinter her. Der ist hier irgendwie wohl im Stringmodus. Aber wieso? Wieso rechnet er mir bei dem gleichen Input resy = 4 - y + b - p = 4 - 4 + 2 - 3 = -1 wiederum korrekt?
Muss ich etwa noch parseint(-2) schreiben oder wie? Wieso ist das hier so stringbasiert? Kann er nicht mehr wie 1 Operation pro Rechenzeile? Also Muss ich
Code:
 reso = -2 - b + p;
in
Code:
 reso = -2;
reso = reso - b;
reso = reso + p;
ändern? Oder irgendwie
Code:
 reso = eval(-2 - b + p);

? Ich versteh das nich ;)
 
Werbung:
Zurück
Oben