Umrechnung Dezimal->Dual! Fehlersuche im Script...
Stefan Krenz
- javascript
0 Cheatah0 Slyh
Hallo,
ich wollte mir einen Umrechner von Dezimalzahlen in Dualzahlen
schreiben.
Leider stimmt etwas mit dem Script nicht, kann aber den Fehler nicht finden!
Ich hoffe es gibt jemanden, der mir die fehlerhaften Zeilen korrigieren kann.
Wichtig ist, daß durch Eingabe einer Dezimalzahl und darauffolgenden Klick auf "Berechnen" das Ergebnis im Feld für Dualzahlen erscheint.
Danke im voraus.
MfG
Stefan Krenz
Nachfolgend das Script:
<HTML>
<HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1252">
<TITLE>2.2.2 Geschäftsbereich Informationstechnik</TITLE>
<script type="text/javascript">
Function DezimaltoDual()
{
var Dezimalzahl=document.DezimaltoDual.Dezimal.value;
var Dualzahl=0;}
while (Dezimalzahl > 0) {
Dualzahl=Dezimalzahl.toString(2); }
document.DezimaltoDual.Dual.value=Dualzahl;
}
</script>
</head>
<BODY>
<H1>Berechnung Dualzahlen aus Dezimalzahlen</H1>
<Form name="DezimaltoDual">
<TABLE border=1>
<TR>
<TH>Dezimalzahl</TH>
<TH>Dualzahl</TH></TR>
<TR>
<TH>Eingabe Dezimalzahl</TH>
<TH>Ausgabe Dualzahl</TH></TR>
<TR>
<TD align="center">
<INPUT type="text" name="Dezimal" size="50"></TD>
<TD align="center">
<INPUT type="text" name="Dual" size="50"></TD>
</TR>
<TR>
<TD colspan="1" align="center">
<input type="reset" VALUE="Werte Löschen"></TD>
<TD colspan="1" align="center">
<input type="button" value="Berechnung" onClick="DezimaltoDual()">
</TD>
</TR>
</Table>
</Form>
</Body>
</Html>
Hi,
Leider stimmt etwas mit dem Script nicht, kann aber den Fehler nicht finden!
wir auch nicht, solange Du keine Fehlerbeschreibung lieferst.
<META http-equiv=Content-Type content="text/html; charset=windows-1252">
Warum benutzt Du keinen standardisierten Zeichensatz wie ISO-8859-1?
Function DezimaltoDual()
Was ist "Function"?
<Form name="DezimaltoDual">
ERROR: Required attribute "action" missing.
Cheatah
Hallo Cheatah,
zur genauen Fehlerbeschreibung kann ich nicht viel sagen.
Mein IE gibt folgende Meldung ab:
Zeile: 62
Zeichen: 1
Fehler: Das Objekt unterstützt diese Eigenschaft oder Methode nicht
Code: 0
Was immer das auch heißen mag... beschäftige mich erst seit einer Woche mit dem Thema Javascript! Deshalb habe ich auch noch keinen richtigen Überblick über das, was ich da so an Fehlern gemacht habe.
Wie ich bereits "Slyh" geschrieben habe, soll ich ein Formular erstellen, mit dem man eingegebene Dezimalzahlen in Dualzahlen umrechnen kann! Die Erstellung des Formulars ist sicherlich fehlerfrei, lediglich die Javascript Passage, speziell der Funktionsblock, scheint mir nicht geglückt zu sein...
Evtl. hast Du ja eine Idee wie ich den Funktionsblock schreiben muss, damit das Script einen Wert ausgibt!?
Gruß
Stefan
Habe alle bisherigen Verbesserungsvorschläge eingearbeitet:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<TITLE>2.2.2 Geschäftsbereich Informationstechnik</TITLE>
<script language="JavaScript">
function DezimaltoDual()
{
var Dezimalzahl=document.DezimaltoDual.Dezimal.value;
var Dualzahl=0;
while (i > 0) {
Dualzahl=Dezimalzahl.toString(2); }
document.DezimaltoDual.Dual.value=Dualzahl;
}
</script>
</head>
<BODY>
<H1>Berechnung Dualzahlen aus Dezimalzahlen</H1>
<Form name="DezimaltoDual">
<TABLE border=1>
<TR>
<TH>Dezimalzahl</TH>
<TH>Dualzahl</TH></TR>
<TR>
<TH>Eingabe Dezimalzahl</TH>
<TH>Ausgabe Dualzahl</TH></TR>
<TR>
<TD align="center">
<INPUT type="text" name="Dezimal" size="50"></TD>
<TD align="center">
<INPUT type="text" name="Dual" size="50"></TD>
</TR>
<TR>
<TD colspan="1" align="center">
<input type="reset" VALUE="Werte Löschen"></TD>
<TD colspan="1" align="center">
<input type="button" value="Berechnung" onClick="DezimaltoDual()">
</TD>
</TR>
</Table>
</Form>
</Body>
</Html>
Hallo Stefan,
zur genauen Fehlerbeschreibung kann ich nicht viel sagen.
Mein IE gibt folgende Meldung ab:Zeile: 62
Zeichen: 1
Fehler: Das Objekt unterstützt diese Eigenschaft oder Methode nicht
Code: 0
Was steht in Zeile 62?
Was immer das auch heißen mag...
Siehe Jürgens Posting: [pref:t=81993&m=477304]
Du gehst davon aus, dass Deine Variable 'Dezimal' eine Zahl enthält.
Davon darfst Du aber nicht ausgehen, auch wenn z.B. im Input-Feld 10.25 steht.
Prüfe den Typ Deiner Variablen und noch ein Tipp: http://selfhtml.teamone.de/javascript/objekte/unabhaengig.htm#number sollte Dir auch noch weiterhelfen.
Weiterhin weist Dein Skript einen Namenskonflikt auf. Formularelemente und Funktionen sollten nicht den gleichen Namen tragen. Überprüfe Dein Skript auf doppelte Namen.
Freundliche Grüsse,
Vinzenz
Hallo Vinzenz,
ich habe das Script jetzt überarbeitet und alle Fehlermeldungen beseitigt!
Ein Problem besteht jedoch noch, und zwar gibt mir das Programm nach der Umrechnung des Dezimalwerts genau den gleichen Wert als Dualwert aus!!
Ich denke es liegt an der Zeile:
var Dualzahl=Dezimalzahl.toString(2);
Ersetze ich die Zeile z.B. durch: ...=Dezimalzahl*2;
dann rechnet er den Ausgabewert für das Dualzahlfeld richtig aus.
Es scheint so, als ob der Befehl "toString(2);" nicht richtig funktioniert!?
Grüße
Stefan
Hier nochmal der komplette Java-Abschnitt zur Übersicht:
<script type="text/javascript">
function Umrechner ()
{
var Dezimalzahl = 0;
var Dualzahl = 0;
{
var Dezimalzahl=document.Dezidual.Dezimal.value;
var Dualzahl=Dezimalzahl.toString(2);
}
document.Dezidual.Dual.value=Dualzahl;
}
</script>
</head>
Hallo Stefan,
zur genauen Fehlerbeschreibung kann ich nicht viel sagen.
Mein IE gibt folgende Meldung ab:Zeile: 62
Zeichen: 1
Fehler: Das Objekt unterstützt diese Eigenschaft oder Methode nicht
Code: 0Was steht in Zeile 62?
Was immer das auch heißen mag...
Siehe Jürgens Posting: [pref:t=81993&m=477304]
Du gehst davon aus, dass Deine Variable 'Dezimal' eine Zahl enthält.
Davon darfst Du aber nicht ausgehen, auch wenn z.B. im Input-Feld 10.25 steht.
Prüfe den Typ Deiner Variablen und noch ein Tipp: http://selfhtml.teamone.de/javascript/objekte/unabhaengig.htm#number sollte Dir auch noch weiterhelfen.Weiterhin weist Dein Skript einen Namenskonflikt auf. Formularelemente und Funktionen sollten nicht den gleichen Namen tragen. Überprüfe Dein Skript auf doppelte Namen.
Freundliche Grüsse,
Vinzenz
Hallo Stefan ,
Du hast schon gewaltige Fortschritte gemacht, prima.
Aber bitte keine sogenannten Fullquotes, d.h. komplettes Zitieren am Stück ...
Zitiere nur das Notwendige, kommentiere an der richtigen Stelle.
Nach dieser Ermahnung Hinweise darauf, was noch nicht in Ordnung ist
Hier nochmal der komplette Java-Abschnitt zur Übersicht:
<steine anzahl="viele">Java und Javascript sind zwei verschiedene Programmiersprachen</steine>, bitte lies http://aktuell.de.selfhtml.org/artikel/humor/brian/index.htm dazu ;-)
function Umrechner ()
ein Fehler beseitigt :-)
{
var Dezimalzahl = 0;
var Dualzahl = 0;
{
var Dezimalzahl=document.Dezidual.Dezimal.value;
einen neuen Fehler eingebaut. Bitte verwende var nur einmal.
An dieser Stelle solltest Du Dir Gedanken über den Typ Deiner Eingabe machen, Number() http://selfhtml.teamone.de/javascript/objekte/unabhaengig.htm#number ist Dein Freund.
var Dualzahl=Dezimalzahl.toString(2);
Fehler wiederholt :-(
}
...
Beginn Fullquote
Hallo Stefan,
mein komplettes Posting am Stück, unkommentiert ...
... mit dem Verweis auf Number(), dieser blieb ungenutzt und nicht hinterfragt.
Vinzenz
Ende Fullquote
Freundliche Grüsse,
Vinzenz
Hallo Vinzenz,
erstmal sorry dafür, dass ich meine Beiträge ein wenig ausschweifend
dargestellt habe...
Da ich mittlerweile seit Dienstag versuche mir das nötige Wissen anzueignen, um diese doch wohl recht leichte Aufgabe zu lösen,
steht für mich an erster Stelle natürlich das richtige Umrechnen
der Dezimalzahl.
Meinen Lösungsansatz hab ich mir aus dem Archiv gesucht, jedoch bin
ich damit nicht so recht weitergekommen, da dort mit komplizierten Rechnungen hantiert wurde...
Dann habe ich den Befehl "to.String" gefunden unter
http://selfhtml.teamone.de/javascript/objekte/number.htm#to_string
Das Beipielprogramm läuft ja anstandslos, lediglich mit der Übertragung in mein Programm bin ich gescheitert...
Ich erhalte als Ausgabewert für die Dualzahl immer genau den Eingabewert der Dezimalzahl!?
function Umrechner ()
{
var Dezimalzahl = 0;
var Dualzahl = 0;
{
Dezimalzahl=document.Dezidual.Dezimal.value;
Dualzahl=Dezimalzahl.toString(2);
}
document.Dezidual.Dual.value=Dualzahl;
}
</script>
An dieser Stelle solltest Du Dir Gedanken über den Typ Deiner
Eingabe machen, Number()
-Ist es notwendig, daß ich mit Number() arbeite um mein Problem mit der Umrechnung zu lösen?
Es interessiert mich in erster Linie wie ich den "toString"-Befehl
in meinem Programm einarbeiten muss, damit ich den richtigen Dual-Wert erhalte...
Ich hoffe Du kannst mir da weiterhelfen, da ich die Aufgabe am Freitag bei meinem Dozenten abgeben muß.
Gruß
Stefan
Hallo Stefan,
An dieser Stelle solltest Du Dir Gedanken über den Typ Deiner
Eingabe machen, Number()-Ist es notwendig, daß ich mit Number() arbeite um mein Problem mit der Umrechnung zu lösen?
Ja.
Es interessiert mich in erster Linie wie ich den "toString"-Befehl
Ich hoffe Du kannst mir da weiterhelfen, da ich die Aufgabe am Freitag bei meinem Dozenten abgeben muß.
Das, was Du über ein Input-Feld in einem Formular eingibst, ist für Javascript eine Zeichenkette, ein String. Das gilt auch dann, wenn diese Zeichenkette z.B. den Wert
10.25
hat. Es ist notwendig, dass Du diese Zeichenkette explizit - mit der Funktion Number() - in eine Zahl umwandelst. Javascript macht dies _nicht_ implizit für Dich, Javascript nimmt Dir diese Arbeit nicht ab.
Eines der typischen Beispiele, wie Javascript mit solchen Eingaben umgeht, kannst Du einfach nachvollziehen:
Zwei Eingabefelder, eine Schaltfläche im Formular und ein Ergebnisfeld (Eingabefeld).
Beim Klicken auf die Schaltfläche werden die beiden Eingaben addiert und das Ergebnis im Ergebnisfeld ausgegeben.
Gib in das erste Eingabefeld 1 ein, in das zweite Eingabefeld 2,
das Ergebnis bei Verwendung des Operators + ist 12, nicht 3.
Grundsätzlich solltest Du Dir angewöhnen, die Benutzereingabe zu überprüfen. Wenn Du in einem Eingabefeld Zahlen erwartest, dann überprüfe, ob es sich um eine Zahl handelt, mit isNaN(). Wurde eine Zahl eingegeben, so wandle die Zahl explizit mit Number() um ...
Freundliche Grüsse,
Vinzenz
Hallo,
<script type="text/javascript">
Function DezimaltoDual()
Eigentlich ist JavaScript case-sensitive. Das Schlüsselwort
"function" müßte also kleingeschrieben sein.
{
var Dezimalzahl=document.DezimaltoDual.Dezimal.value;
var Dualzahl=0;}
..................^
Hat es einen Grund, daß du den Funktions-Block hier schon wieder
schließt?
(Das dürfte übrigens dein Fehler sein.)
while (Dezimalzahl > 0) {
Dualzahl=Dezimalzahl.toString(2); }
Bist du sicher, daß "Deziamlzahl" an dieser Stelle überhaupt eine
Zahl ist?
Gruß
Slyh
Hallo,
danke für die schnelle Antwort, ich habe Deine Verbesserungsvorschläge ausprobiert. Leider funktioniert
das Script noch immer nicht.
Da ich mich erst seit ca. 1 Woche mit dem Thema Javascript beschäftige habe ich noch wenig Ahnung davon.
Wenn Du eine Idee hast, wie ich die Schleife programmieren
muß damit es funktioniert, wäre ich sehr dankbar.
Es soll halt die ins Formular eingegebene Dezimalzahl, nach klicken auf den Button "Berechnung", im Feld Dualzahl dargestellt werden.
Hier noch meine abgeänderte Version:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<TITLE>2.2.2 Geschäftsbereich Informationstechnik</TITLE>
<script language="JavaScript">
function DezimaltoDual()
{
var Dezimalzahl=document.DezimaltoDual.Dezimal.value;
var Dualzahl=0;
while (i > 0) {
Dualzahl=Dezimalzahl.toString(2); }
document.DezimaltoDual.Dual.value=Dualzahl;
}
</script>
</head>
<BODY>
<H1>Berechnung Dualzahlen aus Dezimalzahlen</H1>
<Form name="DezimaltoDual">
<TABLE border=1>
<TR>
<TH>Dezimalzahl</TH>
<TH>Dualzahl</TH></TR>
<TR>
<TH>Eingabe Dezimalzahl</TH>
<TH>Ausgabe Dualzahl</TH></TR>
<TR>
<TD align="center">
<INPUT type="text" name="Dezimal" size="50"></TD>
<TD align="center">
<INPUT type="text" name="Dual" size="50"></TD>
</TR>
<TR>
<TD colspan="1" align="center">
<input type="reset" VALUE="Werte Löschen"></TD>
<TD colspan="1" align="center">
<input type="button" value="Berechnung" onClick="DezimaltoDual()">
</TD>
</TR>
</Table>
</Form>
</Body>
</Html>
Gruß
Stefan
Hallo,
<script type="text/javascript">
Function DezimaltoDual()
Eigentlich ist JavaScript case-sensitive. Das Schlüsselwort
"function" müßte also kleingeschrieben sein.{
var Dezimalzahl=document.DezimaltoDual.Dezimal.value;
var Dualzahl=0;}
..................^Hat es einen Grund, daß du den Funktions-Block hier schon wieder
schließt?
(Das dürfte übrigens dein Fehler sein.)while (Dezimalzahl > 0) {
Dualzahl=Dezimalzahl.toString(2); }Bist du sicher, daß "Deziamlzahl" an dieser Stelle überhaupt eine
Zahl ist?Gruß
Slyh
Hallo Stefan,
ob es mit den folgenden Änderungsvorschlägen geht, habe ich nicht getestet.
<script language="JavaScript">
<script type="text/javascript>
function DezimaltoDual()
{
var Dezimalzahl=document.DezimaltoDual.Dezimal.value;
var Dualzahl=0;while (i > 0) {
Dualzahl=Dezimalzahl.toString(2); }
wozu ist die while-Schleife da? Welchen Wert hat i? Für i==0 passiert nichts, sonst läuft sie bis zum Nimmerleinstag. Lass Sie einfach mal weg. Du willst die Zahl ja nur einmal konvertieren.
document.DezimaltoDual.Dual.value=Dualzahl;
}
</script>
Gut wäre es auch noch, den Input zu prüfen. Such mal im selfhtml nach isNaN (is not a number).
Gruß, Jürgen
Hallo Jürgen,
ich habe das Script jetzt überarbeitet, jedoch taucht ein
Fehler in der Berechnung der Dualzahl auf...
Im Ausgabefeld für die Dualzahl gibt er den gleichen Wert aus,
den ich bei der Dezimalzahl eingebe!?
Hast Du evtl. eine Lösung für dieses Problem? Ich habe die Vermutung, dass der Befehl "Dezimalzahl.toString(2)" nicht funktioniert! Sobald ich den "String" z.B. durch ein +5 ersetze stimmt die Ausgabe...
Vielen Dank für Deine Hilfe. (aktuelles Script ist unten)
Grüße
Stefan
<script type="text/javascript">
function Umrechner ()
{
var Dezimalzahl=0;
var Dualzahl=0;
{
var Dezimalzahl = document.Dezidual.Dezimal.value;
var Dualzahl = Dezimalzahl.tostring(2);
}
document.Dezidual.Dual.value=Dualzahl;
}
</script>
Hallo,
ich habe das Script jetzt überarbeitet, jedoch taucht ein
Fehler in der Berechnung der Dualzahl auf...
Bei mir führt Mozilla das Skript überhaupt erst gar nicht aus, weil
tostring() (man beachte die komplette Kleinschreibung) keine Funktion
ist. Das hattest du im vorherigen Posting noch richtig gehabt.
Baue nicht "absichtlich" Fehler ein.
Und verwende einen anständingen Browser, der dir auch anständig
Fehler anzeigen kann.
Im Ausgabefeld für die Dualzahl gibt er den gleichen Wert aus,
den ich bei der Dezimalzahl eingebe!?
Ja. Weil der Inhalt eines Textfeldes ein String und keine Zahl ist.
Das schrieb ich (indirekt) schonmal.
Mache aus dem String eine Zahl. Verwende dazu eine der "Objektunabhängigen
Funktionen" von JavaScript. (Siehe Selfhtml.)
{
var Dezimalzahl = document.Dezidual.Dezimal.value;
var Dualzahl = Dezimalzahl.tostring(2);
}
Darf ich fragen weshalb du hier einen neuen Block aufmachst?
Und warum du die Variablen nochmal deklariert? Du brauchst nicht bei
jeder Zuweisung "var" davor schreiben.
Gruß
Slyh