Hej Hej Tack för hjälpen men jag har ett formulärfält där summan ska visa utan att man ska behöva klica och få upp summan separat. Som Stefan också nämner, lägg beräkningen i "onchange". Säkert helt riktigt men jag fattar trögt och skrev Hej Detta funkad kanonbra men om jag nu bara vill lägga ihop 2 av fälten och ändå få dem summerade hur gör jag då? <b>Alt 1</b>summera fält med javascript
Jag har ett formulär med 15 produkter som behöver summeras.
Finns det något smart javascript som gör det. Jag har prvat ett men det funkade inte men någon här har kanske något tips.Sv: summera fält med javascript
Visar ett exempel som du sedan kan modifiera för att passa ditt behov.
<b>Grundidé:</b>
<html>
<head>
<script language="javascript">
function calcSum() {
var sum = 0;
for(var i=0; i<4; i++)
sum += parseFloat(document.getElementById("t"+i).value);
return sum;
}
</script>
</head>
<body>
<input type="text" id="t0" name="t0"><br>
<input type="text" id="t1" name="t1"><br>
<input type="text" id="t2" name="t2"><br>
<input type="text" id="t3" name="t3"><br>
<input type="submit" value="Calculate sum" onclick="alert(calcSum());">
</body>
</html>
/ Peter
Sv:summera fält med javascript
Har du ett sådant script också så vore jag tacksamSv: summera fält med javascript
<b>Ändra</b>
<input type="text" id="t0" name="t0">
<b>till</b>
<input type="text" id="t0" name="t0" onchange="calcSum()">
och sedan får du givetvis ändra "calcSum()" till att skriva ut resultatet där du vill ha det.
Sv:summera fält med javascript
<body>
<input type="text" id="t0" name="t0" onchange="calcSum()">
<br>
<input type="text" id="t1" name="t0"onchange="calcSum()">
<br>
<input type="text" id="t2" name="t0" onchange="calcSum()">
<br>
<input type="text" id="t3" name="t0" onchange="calcSum()">
<input type="text" id="calculate sum" name="Calculate sum" calcSum()">
<br>
Och som su förstår så funkade det inte.
Hur ska där stå för att ska få summan i ett summeringsfält oavsätt hur många poster som summeras.
Jag kanske bara beställer 3 varor av 15 ändå ska ju slutsumman visas.
Har du något bra svar så skriv gärna ASAPSv: summera fält med javascript
Alla fält måste ha ett gemensamt namn + ett index att iterera över (lagras i attributet "id").
I mitt fall har jag döp detta namn (prefix) till "t" vilket sedan följs av ett numeriskt index.
<b>Exempel namngivning:</b>
Det numeriska indexet måste här börja på noll (är givetvis valbart).
t0, t1, t2, t3, t4, t5
<b>Exempel</b>
Javascript-funktionen "calcSum(prefix, result)" tar två argument:
1. Prefixet på de fält du vill summera ihop, i vårt fall "t".
2. Ett namn på ett fält där summan skall skrivas ut.
<html>
<head>
<script language="javascript">
function calcSum(prefix, result) {
var sum=0, id=0, element;
while((element=document.getElementById(prefix+id++))!=null)
sum += parseFloat(element.value);
document.getElementById(result).innerHTML = sum;
}
</script>
</head>
<body>
<input type="text" id="t0" onchange="calcSum('t','result')"><br>
<input type="text" id="t1" onchange="calcSum('t','result')"><br>
<input type="text" id="t2" onchange="calcSum('t','result')"><br>
<input type="text" id="t3" onchange="calcSum('t','result')"><br>
<span id="result"></span>
</body>
</html>
/ Peter
Sv:summera fält med javascript
Sv: summera fält med javascript
Ta endast med två fält.
<b>Alt 2</b>
Använd denna funktionen istället:
function calcSum(prefix, result, max) {
var sum=0, id=0, element;
while((max==-1 || max>id) && (element=document.getElementById(prefix+id++))!=null)
sum += parseFloat(element.value);
document.getElementById(result).innerHTML = sum;
}
Här skickar du, som tredje parameter, med ett tal som anger det maximala antalet fält som skall summeras (-1 anger automatiskt alla).
Ditt anrop i "onchange" blir alltså:
calcSum('t','result',2)
/ Peter