---
title: "Checkbox?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/58859-checkbox"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "Jesper T"
published: "2002-11-12T19:59:34.000Z"
updated: "2002-11-13T15:25:51.000Z"
replies: 14
views: 398
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/58859-checkbox"
---

# Checkbox?

## #1 — Jesper T, 2002-11-12T19:59Z

Hej! 
Jag undrar om det går att räkna ut värden men hjälp av javascript ifrån poster som jag markerat med ett kryss i en checkbox.

Exempel:

Postett \| 10 \| &#9600;
Posttvå \| 24 \| &#9600;
Posttre \| 14 \| &#9600;

Totalt:48
(Värdena sätts med en aspvariabel)

Defautvärdet är 10 + 24 + 14 = 48. Nu vill jag kunna kryssa i, låt säga Postett samt Posttre och få Totaltvärdet direkt uppdaterat. Skulle detta gå tror ni?

Permalänk: https://www.webforum.nu/p/58859

## #2 — Jojoxx, 2002-11-12T20:16Z

Re: Checkbox?

> **Jesper T skrev:**
>
> Skulle detta gå tror ni?

Nä det blir svårt...

```
<script>
function updateSum(obj){
	var sum=0;
	for(var i=0;i<obj.length;i++){
		if(obj[i].type=='checkbox'&&obj[i].checked){ sum+=(obj[i].value*1); }
	}
	obj.summa.value=sum;
}
</script>
<form>
Postett | 10 | <input type="checkbox" value="10" onClick="updateSum(this.form)"><br>
Posttvå | 24 | <input type="checkbox" value="24" onClick="updateSum(this.form)"><br>
Posttre | 14 | <input type="checkbox" value="14" onClick="updateSum(this.form)"><br>
<input type="text" name="summa" value="0">
</form>
```

Nämen se... det gick... ;)

Permalänk: https://www.webforum.nu/p/853441

## #3 — Jesper T, 2002-11-12T20:25Z

Tack, va bussigt!
Hur sätter man defautvärdet på det totala då?(nu står det ju noll)
Och här kommer överkursen:
Om raderna innehåller många värden:
Posttre \| 14 \| 15 \| 26 \| 12 \| 16 \| 14 \| 12 \| &#9600; 
Hur gör man dååååå dååå?

Permalänk: https://www.webforum.nu/p/853449

## #4 — Jojoxx, 2002-11-12T20:31Z

Du menar att vissa av checkboxarna kan vara förvalda? (Annars skall ju summan vara 0 från början). I så fall kan du lägga till onLoad="updateSum(document.formulärsnamnet);" i \<body\>.

Permalänk: https://www.webforum.nu/p/853455

## #5 — Jesper T, 2002-11-12T20:37Z

"length" är null eller inget objekt står det då. :(
Se föregående inlägg... :r Mycke jobb blir det.

Permalänk: https://www.webforum.nu/p/853458

## #6 — Johnsen, 2002-11-13T09:15Z

Om du med defaultvärdet menar värdeskolumnen/kolumnerna skall summeras oavsett om ckeckboxarna är ibockade eller ej,
får du göra en funktion som räknar samman checkboxarnas värde (utan att kolla om dom är checkade) efter att formuläret laddats.
Ex:

```
<script>
function updateSum(obj){
	var sum=0;
	for(var i=0;i<obj.length;i++){
		if(obj[i].type=='checkbox'&&obj[i].checked){ sum+=(obj[i].value*1); }
	}
	obj.summa.value=sum;
}
</script>

<form>
Postett | 10 | <input type="checkbox" value="10" onClick="updateSum(this.form)"><br>
Posttvå | 24 | <input type="checkbox" value="24" onClick="updateSum(this.form)"><br>
Posttre | 14 | <input type="checkbox" value="14" onClick="updateSum(this.form)"><br>
<input type="text" name="summa" value="0">
</form>

<script>
	var sum=0;
	for(var i=0;i<document.forms[0].length;i++){
		if(document.forms[0][i].type=='checkbox'){
			sum+=(parseInt(document.forms[0][i].value));
		}
	}
	document.forms[0].summa.value=sum;
</script>
```

Om du vill ha flera värdeskolumner för posterna, kan du ju lägga värdena som en array i checkboxen och summera varje dela av arrayn för sig.
Typ:

```
Posttre | 14 | 15 | 26 | 12 | <input type="checkbox" value="14,15,26,12" onClick="nyFunktion()">
```

Permalänk: https://www.webforum.nu/p/853690

## #7 — Jesper T, 2002-11-13T13:11Z

Tack för tipsen!

Permalänk: https://www.webforum.nu/p/853837

## #8 — Jesper T, 2002-11-13T13:39Z

En, liten fråga. När jag klickat i en box och klickar ur den så står det ju noll(0). Går det att sätta det värdet till 48 så fort som ingen är ikryssad?

Permalänk: https://www.webforum.nu/p/853860

## #9 — @nders, 2002-11-13T13:41Z

```
if (sum==0) sum=48;
obj.summa.value=sum;
```

Eller missförstår jag?

Mvh,

Permalänk: https://www.webforum.nu/p/853862

## #10 — Jesper T, 2002-11-13T13:47Z

Jag hajjar inte :(
Och 48 är det inte alltid ju. 
Jag är riktigt kass på detta.

Permalänk: https://www.webforum.nu/p/853865

## #11 — @nders, 2002-11-13T13:51Z

Det var ju 48 du bad om? Var kommer värdet ifrån då? En asp-variabel? Skriv ut den till javascriptet då.

```
function updateSum(obj){
	var sum=0;
	for(var i=0;i<obj.length;i++){
		if(obj[i].type=='checkbox'&&obj[i].checked){ sum+=(obj[i].value*1); }
	}
	[b]if (sum==0) sum=<%=aspvariabel%>;[/b]
	obj.summa.value=sum;
}
```

Permalänk: https://www.webforum.nu/p/853872

## #12 — Jesper T, 2002-11-13T14:13Z

Nej, nej, nej. Den kommer ifrån värdet/värdena i checkboxarna ser det ut så här är summan 59:

```
Postett | 10 | <input type="checkbox" value="10" onClick="updateSum(this.form)"><br>
Posttvå | 24 | <input type="checkbox" value="24" onClick="updateSum(this.form)"><br>
Posttre | 14 | <input type="checkbox" value="14" onClick="updateSum(this.form)"><br>
Postfyra | 11 | <input type="checkbox" value="11" onClick="updateSum(this.form)"><br>
```

Permalänk: https://www.webforum.nu/p/853885

## #13 — @nders, 2002-11-13T14:17Z

Om ingen är markerad ska det vara summan av alla checkboxars värde? Eller?

```
<script>
function updateSum(obj){
	var sum=0;
	var zerovalue=0;
	for(var i=0;i<obj.length;i++){
		if(obj[i].type=='checkbox'){ zerovalue+=(obj[i].value*1); }
		if(obj[i].type=='checkbox'&&obj[i].checked){ sum+=(obj[i].value*1); }
	}
	if (sum==0) sum=zerovalue;
	obj.summa.value=sum;
}
</script>
```

Red: förkortade funktionen en aning

Permalänk: https://www.webforum.nu/p/853888

## #14 — Jesper T, 2002-11-13T14:22Z

Ja!!!!! Tack!

Permalänk: https://www.webforum.nu/p/853891

## #15 — Johnsen, 2002-11-13T15:25Z

Hmmm, vad händer om en post är negativ:

Postett \| 10 \|
Posttvå \| 24 \|
Posttre \|-10 \|

och ettan och trean är bockade. Med @nders skript skulle resultatet bli 24!

Jag skulle gjort så här: (bara för att reta @nders ;) )

```
function updateSum(obj){
	var sum=0, def=0, isChecked=0
	for(var i=0;i<obj.length;i++){
		if(obj[i].type=='checkbox'){def+=(obj[i].value*1);}
		if(obj[i].type=='checkbox'&&obj[i].checked){sum+=(obj[i].value*1); isChecked=1}
	}
	(isChecked==1)? obj.summa.value=sum : obj.summa.value=def;
}
```

Permalänk: https://www.webforum.nu/p/853950

---

Tråden på webben: https://www.webforum.nu/amne/javascript/58859-checkbox
