Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

eine null (oder währung) hinter der berechnung?





Frage

hi, ich habe da ein script welches auf der seite online mit einem berechnung button einen preis aus mehreren feldern zusammenrechnet, es funktioniert auch gut, nur zeigt er z.b. nicht "19.90 Euro" an, sondern "19.9", wie kann ich dort zumindest noch eine null ans ende bekommen? ich poste sicherheitshalber noch mal das script: im head steht: <script language="JavaScript" type="text/JavaScript"> <!-- function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); if(!x && d.getElementById) x=d.getElementById(n); return x; } function KW_getVal(o){ var retVal="0";if (o.type=="select-one") {retVal=(o.selectedIndex==-1)?0:o.options[o.selectedIndex].value;} else if (o.length>1){for (var i=0;i<o.length;i++) if (o[i].checked) retVal=o[i].value; } else if (o.type=="checkbox") {retVal=(o.checked)?o.value:0;} else { retVal=Number(o.value)}return parseFloat(retVal); } function KW_calcForm() { var str="",a=KW_calcForm.arguments; for (var i=2;i<a.length;i++) str+=(a[i].indexOf("#")==-1)?a[i]:KW_getVal(MM_findObj(a[i].substring(1))); MM_findObj(a[0]).value=Math.round(a[1]*eval(str))/a[1]; } //--> </script> Die Button Zeile: <a href="#endpreis"><img src="../img/preis_button.gif" width="181" height="30" border="0" onClick="KW_calcForm('endpreis',100,'#menge1','*','#preis1','+','#menge2','*','#preis2','+','#menge3','*','#preis3','+','#menge4','*','#preis4','+','#menge5','*','#preis5','+','#menge6','*','#preis6','+','#porto')"> so, ich hoffe ihr kommt damit besser klar, bin für jede antwort dankbar, javascript ist nicht so mein ding.# vielen dank

Antwort 1 von Dr.Ma-Busen

Hallo!

Ersetze mal folgende zeile:
MM_findObj(a[0]).value=Math.round(a[1]*eval(str))/a[1]; 

durch folgendes:
var wert = Math.round(a[1]*eval(str))/a[1];
var such = /(\d+)\.(\d)$/;
if(such.test(wert)){
	such.exec(wert);
	wert = RegExp.$1+"."+RegExp.$2+"0";
	}
MM_findObj(a[0]).value = wert;

Dann sollte es Funktionieren

MfG
Dr.Ma-Busen

Antwort 2 von Micha@agame.de

klasse, wenn du weiblich wärst, könnte ich dich küssen.

aber so, lege ich mich an deinen busen, und sage DANKE :-)

Gruß,
micha