I en multiple choice kan brugeren for hvert spørgsmål svare enten A, B eller C. Afhængig af hvilket svar der er flest af, bliver brugeren sendt til enten frame 1, 2 eller 3. Brugerens besvarelse kan f.eks. se således ud:
Sp. 1: B Sp. 2: B Sp. 3: C Sp. 4: A Sp. 5: B Sp. 6: A
Til hvert spørgsmål er tilknyttet en variabel, dvs. ovenstående giver følgende værdier: sp1=B, sp2=B, sp3=C, sp4=A, sp5=B, sp6=A.
Hvordan evaluerer jeg de seks variabler, for at nå frem til, om der er flest besvarelser for A, B eller C?
Nej, ingen besked. Når brugeren har besvaret alle spørgsmål, klikkes der submit, hvorefter vedkommende sendes til enten frame 1, 2 eller 3 afhængigt af om der er flest A-, B- eller C-besvarelser. Dvs. sammentællingen sker f.eks. ved klik på submit-knappen.
Har jeg nogen nytte af at smide besvarelserne i et array? Ja, jeg er muligvis lidt smådum - til gengæld er min logiske tankegang også kørt fast :)
Der kommer noget i variablerne når brugeren klikker på et at de tre svar i et spørgsmål, dvs. hvis brugeren klikker på B i spørgsmål 1, får sp1 ved klik på svaret værdien "B". Der er tre svarmuligheder for hvert spørgsmål som fungerer som radio buttons, dvs. hvis brugeren efterfølgende vælger at svare A i stedet for B i spørgsmål 1, ændres variablen sp1 til værdien "A".
Jo, det kan godt tænkes, at det er smartere med et array :) Hvordan ville dette i så fald sættes op smartest? Det eneste jeg har brug for er at tælle besvarelserne sammen for at nå frem til om der er flest A'er, B'er eller C'er.
Mange tak for det gode eksempel! Jeg ser dog først nu, at mit spørgsmål ligger i kategorien JavaScript og ikke ActionScript, som er det jeg arbejder i - jeg er ellers ret sikker på at jeg valgte ActionScript...
Anyway, jeg har kunnet overføre principperne i dit eksempel til mit ActionScript, og det fungerer fint. Det sidste jeg nu mangler - og som jeg umiddelbart ikke kan gennemskue - er, at returnere det svar, der er flest af (altså A, B eller C). Ovenstående giver mig jo et array med f.eks. A=2, B=4, C=3. Hvis jeg sorterer arrayet sker det ud fra A, B og C, og altså ikke disses værdier, som er det jeg har brug for?
var talte = []; talte["A"] = 8; talte["B"] = 7; talte["C"] = 5; var maxId,max=0; for(x in talte){ if(talte[x] > max){ max = talte[x]; maxId = x; } } alert(maxId + ": " + max);
-- og også her skulle principperne i ActionScript være det samme, da også det er baseret på EcmaScript-standarden !-)
Velbekomme '-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.