webForumDet fria alternativet

Summera tvådimensionellt fält av checkboxar

JavaScript

1 svar · 239 visningar · startad av jepsO

Medlem sedan mars 2001484 inlägg
Frågan#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.

260 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)