• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Modulo10 Rekursiv Ausgeben

Kico

New member
Hallo Leute
Ich bin dabei eine Modulo10 Berechnung auf einer Webseite via JS aufzubauen.

Ich habe alles soweit gemacht, aber irgendwo habe ich einen "Denkfehler".
Die Prüfziffer wird mir nicht ausgegeben, aber ich komme nicht drauf wieso!
Kann das daran liegen das es ein numerischer Wert sein muss?

HTML:
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function mod10(str) 
{
	var ipz = parseFloat(str.value);
	var MODULO10 = [0, 9, 4, 6, 8, 2, 7, 1, 3, 5];
	var sum = 0;
	var i, l = ipz.length;
	for (i = 0; i < l; i++) {
		sum = MODULO10[(sum + parseInt(ipz.substr(i, 1), 10)) % 10];
	}
	document.zahlenkombination.Output1.value = ((10 - sum) % 10);
	document.zahlenkombination.Output2.value = ipz;
}

</SCRIPT>
</HEAD>
<BODY>
	<FORM NAME="zahlenkombination">
	    Geben Sie die erste Zahl ein:
        <INPUT TYPE="text" NAME="checkthisnumber" value="0" onKeyup="mod10(checkthisnumber)"><P>
        <INPUT TYPE="text" NAME="Output1" value="0" SIZE="20">
        <INPUT TYPE="text" NAME="Output2" value="0" SIZE="20">
	</FORM>
</BODY>
</HTML>

Ich hab erst mit JS angefangen, bitte um Nachsicht ...;)

LG Kay
 
du willst doch an der Stelle jede Ziffer der Zahl abarbeiten? dann konvertier den Input einfach nicht zu einer Zahl ...
 
Ich komme immer noch nicht drauf... der Input ist ja als TYPE="text", somit übergebe ich ja einen textstring und nicht eine Nummer?
Ich habe mal versucht die Ausgabe als String zu konvertieren, aber geht wieder nix...

HTML:
<HTML>
<HEAD>
<meta charset="utf-8">
</HEAD>
<BODY>
	<FORM NAME="zahlenkombination">
	    Geben Sie die erste Zahl ein:
        <INPUT TYPE="text" NAME="checkthisnumber" value="0" onKeyup="mod10(checkthisnumber)"><P>
        <INPUT TYPE="text" NAME="Output1" value="0" SIZE="20">
        <INPUT TYPE="text" NAME="Output2" value="0" SIZE="20">
	</FORM>
</BODY>
<SCRIPT LANGUAGE="JavaScript">
function mod10(str) 
{

	var ipz = parseFloat(str.value);
	var MODULO10 = [0, 9, 4, 6, 8, 2, 7, 1, 3, 5];
	var sum = 0;
	var i, l = ipz.length;
	for (i = 0; i < l; i++) {
		sum = MODULO10[(sum + parseInt(ipz.substr(i, 1), 10)) % 10];
	}
	var opz = ((10 - sum) % 10).toString();
	document.zahlenkombination.Output1.value = opz;
	document.zahlenkombination.Output2.value = ipz;
}

</SCRIPT>
</HTML>
 
Dormilich meint diese Zeile var ipz = parseFloat(str.value);
hier castest du den Übergabeparam zu Float

und hier behandelst du ihn als String
sum = MODULO10[(sum + parseInt(ipz.substr(i, 1), 10)) % 10];

es genügt den Parameter zu Übernehmen.
ipz = str.value; : )
 
Hallo Leute
Danke erstmal für alle Anregungen.
Der Tipp von Andreax hat mir die Lösung gebracht, mir war es nicht bewusst das ich "hin und her" konvertiere.
Somit ist auch klar was Dormilich gemeint hat.
Wieder was gelernt!!! TNX

@kkapsner
Da gebe ich dir Recht, der Html code ist nicht "schön", aber habe den Rahmen nur quick/dirty aufgesetzt um mal was via Web zu testen...
Diese "Modulo10 Rekursiv" Berechnung wird in der Schweiz für Einzahlungsscheine verwendet. Diese Kalkulation soll dann für Stichproben im Intranet zur Verfügung stehen.

LG Kay
 
Zurück
Oben