Jag studerade S@rpp@ fråga för någon dag sedan och jobbade vidare lite med det tipset han fick. Men nu så skulle jag vilja lägga till några fler funktioner till addera().
Funktionerna är att man vill efter total skall kunna lägga på t.ex moms .. dvs totalvärdet x 1,25 och till slut även totalvärdet inkl moms i ett fält också. Viktigt att det blir 2 fält till så man får se momsen specad.
Hoppas att någon förstod vad jag skrev :-) Lägger med min lite ändrade kod:
<script type="text/javascript">
var delsum1=0;
var delsum2=0;
var delsum3=0;
var delsum4=0;
var delsum5=0;
var delsum6=0;
var delsum7=0;
var vardesum=0;
function addera(){
var elm = document.forms["form1"].elements;
delsum1=parseFloat(elm["antal1"].value)*parseFloat(elm["pris1"].value);
delsum2=parseFloat(elm["antal2"].value)*parseFloat(elm["pris2"].value);
document.getElementById("delsum1").innerHTML = delsum1;
document.getElementById("delsum2").innerHTML = delsum2;
document.getElementById("varde").innerHTML = delsum1+delsum2;
}
</script>
Jag vet nu inte vad jag skall lägga till "momsbelopp" och "totalvarde" för att de skall räknas ut i samma beräkning!
Skall jag även lägga till momsen i en "hidden" med value 1.25 eller?
Tack på förhand / Micke
Nu kanske jag saboterar allt för dig här, men eftersom jag är ganska road av javascript har jag skrivit om funktionen lite. Här är en liten testsida som jag skrev ihop precis. Kanske kan vara något att utgå ifrån i alla fall:
<html>
<head>
<title>Formulär</title>
<style type="text/css">
body, td { font: 12px arial, helvetica, sans-serif; }
.total { font-weight: bold; }
.antal { width: 60px; }
</style>
<script language="javascript" type="text/javascript">
function addera()
{
var elms = document.forms["form1"].elements;
var momsfaktor = 1.25;
var totsum = 0.0;
var i = 1;
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;
document.getElementById( "delsum"+i ).innerHTML = delsum;
document.getElementById( "delsum_moms"+i ).innerHTML = delsum * momsfaktor;
totsum += delsum;
i++;
}
elms["totalpris"].value = totsum;
elms["totalpris_moms"].value = totsum * momsfaktor;
document.getElementById( "totsum" ).innerHTML = totsum;
document.getElementById( "totsum_moms" ).innerHTML = totsum * momsfaktor;
}
</script>
</head>
<body>
<form name="form1">
<table>
<tr>
<td>Antal</td>
<td>Namn</td>
<td>Pris/st</td>
<td>Delsumma exkl. moms</td>
<td>Delsumma inkl. moms</td>
</tr>
<tr>
<td><input type="text" name="antal1" value="0" onchange="addera();" class="antal"></td>
<td>Vara 1</td>
<td>120,00<input type="hidden" name="pris1" value="120"></td>
<td id="delsum1"></td>
<td id="delsum_moms1"></td>
</tr>
<tr>
<td><input type="text" name="antal2" value="0" onchange="addera();" class="antal"></td>
<td>Vara 2</td>
<td>500,00<input type="hidden" name="pris2" value="500"></td>
<td id="delsum2"></td>
<td id="delsum_moms2"></td>
</tr>
<tr>
<td><input type="text" name="antal3" value="0" onchange="addera();" class="antal"></td>
<td>Vara 3</td>
<td>400,00<input type="hidden" name="pris3" value="400"></td>
<td id="delsum3"></td>
<td id="delsum_moms3"></td>
</tr>
<tr>
<td colspan="3" class="total">Total:<input type="hidden" name="totalpris" value="0"><input type="hidden" name="totalpris_moms" value="0"></td>
<td id="totsum" class="total"></td>
<td id="totsum_moms" colspan="4" class="total"></td>
</tr>
</table>
</body>
</html>
Jag blir galen, jag vet inte varför jag får fel?
<script language="javascript" type="text/javascript">
function addera()
{
var elms = document.forms["form1"].elements;
var momsfaktor = 1.25;
var totsum = 0.0;
var i = 1;
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;
document.getElementById( "delsum"+i ).innerHTML = delsum;
document.getElementById( "delsum_moms"+i ).innerHTML = delsum * momsfaktor;
totsum += delsum;
i++;
}
elms["totalpris"].value = totsum;
elms["totalpris_moms"].value = totsum * momsfaktor;
document.getElementById( "totsum" ).innerHTML = totsum;
document.getElementById( "totsum_moms" ).innerHTML = totsum * momsfaktor;
}
</script>
<IMG alt="till menysida" src="images/loggo.gif" border="0"><br>
<BR>
<B><br>
</B>
<form name="form1">
<p><b>Beställningsformulär:</b></p>
<table width="506" border="0" cellspacing="2" cellpadding="0">
<tr>
<td width="100">Artikelnr</td>
<td>Benämning</td>
<td width="30">Antal</td>
<td width="60">A´pris</td>
<td width="70">
<div align="left">
Pris</div>
</td>
</tr>
<tr>
<td width="100"><input size="15" name="artnr1" tabindex="6"></td>
<td><input size="35" name="ben1" tabindex="7"></td>
<td width="30"><input size="7" type="text" name="antal1" value="0" onchange="addera();" class="antal"></td>
<td width="60"><input size="10" type="text" name="pris1" value="0" onChange="addera()"></td>
<td width="70" id="delsum1"></td>
</tr>
<tr>
<td width="100"><input size="15" name="artnr2" tabindex="6"></td>
<td><input size="35" name=ben"2" tabindex="7"></td>
<td width="30"><input size="7" type="text" name="antal2" value="0" onchange="addera();" class="antal"></td>
<td width="60"><input size="10" type="text" name="pris2" value="0" onChange="addera()"></td>
<td width="70" id="delsum2"></td>
</tr>
<tr>
<td width="100"><input size="15" name="artnr3" tabindex="6"></td>
<td><input size="35" name="ben3" tabindex="7"></td>
<td width="30"><input size="7" type="text" name="antal3" value="0" onchange="addera();" class="antal"></td>
<td width="60"><input size="10" type="text" name="pris3" value="0" onChange="addera()"></td>
<td width="70" id="delsum3"></td>
</tr>
<tr>
<td width="100"><input size="15" name="artnr4" tabindex="6"></td>
<td><input size="35" name="ben4" tabindex="7"></td>
<td width="30"><input size="7" type="text" name="antal4" value="0" onchange="addera();" class="antal"></td>
<td width="60"><input size="10" type="text" name="pris4" value="0" onChange="addera()"></td>
<td width="70" id="delsum4"></td>
</tr>
<tr>
<td width="100"><input size="15" name="artnr5" tabindex="6"></td>
<td><input size="35" name="ben5" tabindex="7"></td>
<td width="30"><input size="7" type="text" name="antal5" value="0" onchange="addera();" class="antal"></td>
<td width="60"><input size="10" type="text" name="pris5" value="0" onChange="addera()"></td>
<td width="70" id="delsum5"></td>
</tr>
<tr>
<td width="100"><input size="15" name="artnr6" tabindex="6"></td>
<td><input size="35" name="ben6" tabindex="7"></td>
<td width="30"><input size="7" type="text" name="antal6" value="0" onchange="addera();" class="antal"></td>
<td width="60"><input size="10" type="text" name="pris6" value="0" onChange="addera()"></td>
<td width="70" id="delsum6"></td>
</tr>
<tr>
<td width="100"><input size="15" name="artnr7" tabindex="6"></td>
<td><input size="35" name="ben7" tabindex="7"></td>
<td width="30"><input size="7" type="text" name="antal7" value="0" onchange="addera();" class="antal"></td>
<td width="60"><input size="10" type="text" name="pris7" value="0" onChange="addera()"></td>
<td width="70" id="delsum7"></td>
</tr>
<tr>
<td width="100"><input size="15" name="artnr8" tabindex="6"></td>
<td><input size="35" name="ben8" tabindex="7"></td>
<td width="30"><input size="7" type="text" name="antal8" value="0" onchange="addera();" class="antal"></td>
<td width="60"><input size="10" type="text" name="pris8" value="0" onChange="addera()"></td>
<td width="70" id="delsum8"></td>
</tr>
<tr>
<td width="100"><input size="15" name="artnr9" tabindex="6"></td>
<td><input size="35" name="ben9" tabindex="7"></td>
<td width="30"><input size="7" type="text" name="antal9" value="0" onchange="addera();" class="antal"></td>
<td width="60"><input size="10" type="text" name="pris9" value="0" onChange="addera()"></td>
<td width="70" id="delsum9"></td>
</tr>
<tr>
<td width="100"><input size="15" name="artnr10" tabindex="6"></td>
<td><input size="35" name="ben10" tabindex="7"></td>
<td width="30"><input size="7" type="text" name="antal10" value="0" onchange="addera();" class="antal"></td>
<td width="60"><input size="10" type="text" name="pris10" value="0" onChange="addera()"></td>
<td width="70" id="delsum10"></td>
</tr>
<tr>
<td width="100"></td>
<td></td>
<td width="30"></td>
<td width="60">Varuvärde</td>
<td width="70" id="totsum" class="total"></td>
</tr>
<tr>
<td width="100"></td>
<td></td>
<td width="30"></td>
<td width="60">Totalt</td>
<td width="70" id="totsum_moms" colspan="4" class="total"></td>
</tr>
</table>
Jag orkar inte riktigt läsa hela din kod, men en gissning är att funktionen addrera() försöker uppdatera ett värde i något fält som inte finns i din kod. Ny funktion addera() som kollar om summeringsfälten finns innan den försöker uppdatera dem:
function addera()
{
var elms = document.forms["form1"].elements;
if ( !elms )
return false;
var momsfaktor = 1.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;
obj = document.getElementById( "totsum" );
if ( obj )
obj.innerHTML = totsum;
obj = document.getElementById( "totsum_moms" );
if ( obj )
obj.innerHTML = totsum * momsfaktor;
return true;
}
Den kanske fungerar åtminstone...