webForumDet fria alternativet
Logga in / Bli medlem

Functions-fråga!

JavaScript

1 svar · 289 visningar · startad av harry_boy

Medlem sedan feb. 2003193 inlägg
Trådstart#1

Jag skäms för att jag bombaderar Er med mitt beställningsformulärsfråga!!

Om jag använder mig av denna beräkning och så summerar den inte rätt om jag använder mig av kommadecimal i stället för punkt. Dvs 2*1,6=2 istället för t.ex 2*1.6=3.2.
Jag fick hjälp i en tidigare tråd att ersätta en punkt till ett komma och detta går bra och jag får då resultatsidan som skickas som mail att bli rätt. Så egentligen så är det att denna function skall addera om jag har komma-decimal så skulle allt bli bra! Går det även att få med 2 decimaler så hade det varit kanonbra!


<script language="javascript" type="text/javascript">
function addera()
{
	var elms = document.forms["form1"].elements;
	if ( !elms )
		return false;

	var momsfaktor = 1.25;
	var momsfaktor2 = 0.25;

	var totsum = 0.0;
	var i = 1;

	var obj = null;

	while ( elms["antal"+i] && elms["pris"+i] )
	{
		var delsum = parseFloat( elms["antal"+i].value, 10 ) * parseFloat( elms["pris"+i].value, 10 );
		if ( isNaN( delsum ) )
			delsum = 0;

		obj = document.getElementById( "delsum"+i );
		if ( obj )
			obj.innerHTML = delsum;
		obj = document.getElementById( "delsum_moms"+i );
		if ( obj )
			obj.innerHTML = delsum * momsfaktor;

		totsum += delsum;
		i++;
	}

	if ( elms["totalpris"] )
		elms["totalpris"].value = totsum;
	if ( elms["totalpris_moms"] )
		elms["totalpris_moms"].value = totsum * momsfaktor;
	if ( elms["moms"] )
		elms["moms"].value = totsum * momsfaktor2;
	obj = document.getElementById( "totsum" );
	if ( obj )
		obj.innerHTML = totsum;
	obj = document.getElementById( "totsum_moms" );
	if ( obj )
		obj.innerHTML = totsum * momsfaktor;
	obj = document.getElementById( "tot_moms" );
	if ( obj )
		obj.innerHTML = totsum * momsfaktor2;

	return true;
}

</script>
Medlem sedan dec. 20025 483 inlägg
#2

Om decimaltalen i forumläret skrivs med kommatecken får du först omvandla dessa i funktionen, utföra beräkningarna, omvandla tillbaka och därefter skriva till inputrutorna.

Så här kan du göra:

String.prototype.make_decimal = function(){
    var s = this.replace(/,/g, '.');
    if (isNaN(s)) return null;
    return s;
}

function addera(){
    var elms = document.forms["form1"].elements;

    // Deklarera variabler för inputelementen, t ex
    var antal1 = elms["antal1"];
    .
    .
    .
    // Omvandla till punktform och undersök huruvida formatet är giltigt
    var val;
    if ((val = antal1.value.make_decimal()) == null) alert("Ej giltigt format!");
    .
    .
    .
    // Utför beräkningar
    var totsum = [i]x[/i] + [i]y[/i];

    // Skriv tillbaka
    document.getElementById("totsum").innerHTML = (totsum + "").replace(/\./g, ',');
}

:)

248 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
121 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)