Zeichenketten formatieren

BigBenny

Grünschnabel
Hallo Leute,

ich habe folgendes Problem....

Ich möchte ganz gerne einen bestimmten Text austauschen,
der später als Währungszahl ausgegeben wird.
Bis jetzt klappt alles, bis auf die "." Zahl nach Tausendern
(als Bsp.: 1000,00 € und ich brauche 1.000,00 €).

Hier ist das Skript:

function runden(anzahl,verpack,gesamt,rabatt1,rabatt2) {
if(rabatt1!=""){
if(verpack>=2000){
var k = (Math.round(anzahl * gesamt)).toString();
var j = (k * rabatt1) / 100; // rabatt
var k = (k - j).toString();
}else{
var k = (Math.round(anzahl * gesamt)).toString();
}
}else if(rabatt2!=""){
if(verpack>=3000){
var k = (Math.round(anzahl * gesamt)).toString();
var j = (k * rabatt2) / 100; // rabatt
var k = (k - j).toString();
}else{
var k = (Math.round(anzahl * gesamt)).toString();
}
}else{
var k = (Math.round(anzahl * gesamt)).toString();
}
k += (k.indexOf('.') == -1)? '.00' : '00';
var p = k.indexOf('.'), m = k.indexOf('-.');
var f = (p == 0 || m == 0)? '0,' : ',';

return k.substring(0, p) + f + k.substring(p+1, p+3) + " €";
}
function Textwechsel(stk,anzahl,preis,zahlneu,rabatt1,rabatt2) {
var gesamt = stk * preis;
var verpack = stk * anzahl;
var gesamtpreis = (stk * anzahl) * preis;

document.getElementById("Text"+zahlneu).innerText = runden(anzahl,verpack,gesamt,rabatt1,rabatt2);
}

Die Daten werden mit: onKeyUp="Textwechsel('152',this.value,'3.52','5','','20'); aufgerufen....

Ich brauch wirklich Hilfe....
 
Ich weiss zwar nicht, was du mit deiner Funktion bezwecken willst, aber ich hab dir mal was geschrieben.
PHP:
<html>
<head>
<script type="text/javascript">

function str_reverse( in_string ) {
    out_string = "";

    for (i=in_string.length; i>=0; i--) {
        out_string += in_string.charAt(i);
    }

    return out_string;
}


function gonum() {
    thenum = window.document.numform.numbertxt.value;
    while (thenum.substr(0, 1) == "0") {
        thenum = thenum.substring(1, thenum.length);
    }

    if (thenum.indexOf(",") != -1) {
        nachstellen = thenum.substring(thenum.indexOf(",")+1, thenum.length);
        thenum = thenum.substring(0, thenum.indexOf(","));
        komma = true;
    } else {
        komma = false;
    }
    if (thenum.length > 3) {
        if (thenum.length % 3 == 0) {
            thenum = str_reverse( thenum );
	    thenum_temp = thenum.substr(0, 3);
	    for (i=3; i<thenum.length; i++) {
		if (i % 3 == 0) {
		    thenum_temp += "." + thenum.substr(i, 3);
                }
            }
            thenum = str_reverse(thenum_temp);
	} else {
	    thenum_temp = thenum.substring(0, thenum.length%3);
	    thenum = thenum.substring(thenum.length%3, thenum.length);
	    for (i=0; i<thenum.length; i++) {
		if (i % 3 == 0) {
		    thenum_temp += "." + thenum.substr(i, 3);
                }
            }     
	    thenum = thenum_temp;       
        }
    }

    if (komma == true) {
        window.document.numform.resultn.value = thenum + "," + nachstellen;
    } else {
        window.document.numform.resultn.value = thenum;
    }
}

</script>
</head>
<body>

<form name="numform">
Zahl eingeben (mit Komma getrennt): <input type="text" name="numbertxt" size="30">
<br><br>
<input type="button" value=" Umrechnen " onClick="gonum();">
<br><br>
Ergebnis: <input type="text" name="resultn" size="30">
</form>

</body>
</html>
Der Stil ist jetzt nicht besonders gut, aber es dürfte reichen.
 
Zuletzt bearbeitet von einem Moderator:
Danke für die Lösung,
aber die ist nich ganz das richtige...

Wie gesagt ich versuche nur eine €-Zahl zu bekommen,
die ordentlich formatiert ist.

Die Zahlen kommen aus der Datenbank, und werden per php
an eine javascript-funktion übergeben.
Bis jetzt klappt alles, bis auf die Tatsache, das
der Punkt nicht richtig gesetzt wird. Also 15000,00 @ und es sollte 15.000,00 € sein....als Beispiel...
 
Mein Script macht doch genau das, oder nicht?

//Edit: Oder meinst du das, dass die Kommastellen automatisch eingefügt werden?

Danne ersetz
PHP:
if (komma == true) {
    window.document.numform.resultn.value = thenum + "," + nachstellen;
} else {
    window.document.numform.resultn.value = thenum;
}
durch das:
PHP:
if (komma == true) {
    window.document.numform.resultn.value = thenum + "," + nachstellen;
} else {
    window.document.numform.resultn.value = thenum + ",00";
}

//Edit 2: Und wenn du willst, dass alle Ziffern nach der 2. Nachkommastelle abgeschnitten werden, dann machs so:
PHP:
nachstellen = thenum.substr(thenum.indexOf(",")+1, 0);
thenum = thenum.substring(0, thenum.indexOf(","));
 
Zuletzt bearbeitet von einem Moderator:
Danke für die Lösung, aber wie gesagt ich brauche keine Kommatrennung sondern die Punktvergabe nach 1000 dern!!!! Punkt nich Komma .... Aber danke trotzdem, habe die Lösung jetzt selbst entdeckt.
 
Man man, was glaubst du, was das Script macht??
Geb mal eine Zahl mit mehr als 3 Stellen ein und staune: Es werden die 1000er derch Punkte (.) getrennt!!!
 

Neue Beiträge

Zurück