Summera tvådimensionellt fält av checkboxar

JavaScript

1 svar · 245 visningar · startad av jepsO

Medlem sedan mars 2001484 inlägg
Trådstart#1

Jag försöker organisera en resa för ett gäng om 13 personer. Alla är så klart lediga under olika veckor, så för att underlätta detta tänkte jag lägga upp en liten tabell på vår gemensamma hemsida.

Såhär ser den ut i sin nuvarande form: http://www.mumcmums.com/sommarvecka/test.html
Ta gärna en titt på källkoden. Min idé var att göra rubbet JavaScript-baserat, vilket jag hoppas var en god sådan.

Tanken är att var och en ska kunna gå in och klicka i de veckor (checkboxar) man är ledig, varpå summan längst ner uppdateras. Sen väljer vi helt sonika den vecka där flest kan.

Min fråga lyder: Hur ska summeringen gå till? Först tänkte jag att en tvådimensionell array kunde lösa biffen, men hur ska jag namnge dessa? Alla tips är välkomna!

Tack på förhand.

Medlem sedan sep. 20021 655 inlägg
#2

Jag ser inte direkt någon mening med att göra allting JavaScript-baserat.
När jag har kryssat i vilka veckor jag är ledig vill jag ju att det ska sparas någonstans, och det enda stället det kan sparas, är på servern, eftersom de andra användarna också måste kunna få se vilka veckor jag är ledig.
Därför räcker inte JavaScript till.

När det gäller att skapa summeringsfunktionerna bör det inte bli så svårt.

function summeraKolumn(kolumnNummer) {
   var checkbox,
       summa = 0,
       i = 0;

   while(checkbox = document.forms[0].elements["checkbox" + kolumnNummer + "," + i]) {
      if(checkbox.checked)
         summa++;
   }

   return summa;
}

I koden förutsätts att checkboxarna heter "checkboxkolumnNummer,radNummer".

Du kommer lättast åt innehållet i en cell, där du ska skriva ut summan, genom innerHTML, såvida du inte vill använda vanliga textfält i cellerna.

När man bockar för eller av en checkbox körs automatiskt en summering av just den kolumnen.
När sidan laddas kan du köra summering av samtliga kolumner genom två nästlade loopar, om du inte väljer att låta språket på servern ta hand om den första summeringen.

264 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)