08. juni 1999 - 17:51Der er
24 kommentarer og 1 løsning
Quiz i JavaScript
Jeg roder med at lave en Internet-quiz. Det skal være sådan at man har tre valgmuligheder, som giver hhv. 1, 2 og 3 point. Tilsidst, efter ex. 10 spm, har scriptet talt point sammen og linker om til en side ihenhold til hvor mange point man har scoret. Er der nogen so kan hjælpe ??
Jeg havde tænkt mig at det skulle være et lille vindue som poppede op (det script har jeg lavet). Derefter skal man svare på et af tre spørgsmål (i en checkbox) Trykke 'submit' Herefter skulle de næste 3 spørgsmål dukke op. Og så fremdeles..
var remote; function launch(newURL, newName, newFeatures, orgName) { remote = open(newURL, newName, newFeatures); if (remote.opener == null) remote.opener = window; remote.opener.name = orgName; return remote; }
Og indsæt følgende variabler og funktion :
// samlet antal spørgsmål var antalSpm = 4; // Startspørgsmål var nuvSpm = 1; // En tekststreng indeholdende alle svarene var rigtigeSvar = "abca"; // Startpoint var point = 0; function behandlSvar(svar) { if (svar == rigtigeSvar.charAt(nuvSpm-1)) { point++; } nuvSpm++; if (nuvSpm <= antalSpm) { remote.location.href="spm"+nuvSpm+".htm"; remote.focus(); } else { remote.close(); alert("du fik "+point+" point."); } }
Jeg kan give dig en anden quiz på nettet du kan blive inspireret af:
http://www.jytte.madsen.org/javascriptseks/rammer.htm og vælg "bananer i pyjamas" for at få en quiz om ... gæt engang, eller "lav din egen..." for online - i JavaScript - at lave din egen quiz (med visse begrænsninger).
Justincase, et af mine problemer er at komme fra spm1 til spm2, hvordan løser du den. Ellers er dit script godt tænkt. Jeg var selv ude i at lave noget med frames og lave kodningen i parent-framet.
I denne funktion (behandlSvar) ser vi på om det var det sidste spørgsmål eller ej. Hvis Det ikke var det sidste lægges der en til nuværende spørgsmål tælleren, som så henter næste side ind i remote window og bringer det frem i front.
function behandlSvar(svar) { if (svar == rigtigeSvar.charAt(nuvSpm-1)) { point++; } // Her lægges 1 til nuværende spørgsmål. nuvSpm++; if (nuvSpm <= antalSpm) { // Og her hentes det ind i remote window. remote.location.href="spm"+nuvSpm+".htm"; remote.focus(); } else { remote.close(); alert("du fik "+point+" point."); } }
Altså hver spørgsmål side hedder : spm1.htm spm2.htm spm3.htm
osv.
Virker det ikke hos dig ?? Eller er det noget andet der er problemet?
JustinCase, hvordan åbner jeg mit vindu i det første script. Jeg har brugt: <A HREF="java script:launch()">QUIZ</A> Men den vil ikke fremfinde spm1.htm
JUHUU, jeg har fået det til at virke nu. Der er lige en ting: Som den er nu, tæller den kun de rigtige svar sammen. Jeg havde tænkt mig at lave det således at man fik hhv. 1, 2 eller 3 point, som så blev talt sammen. Når man havde svarret på alle spørgsmål, skulle den så åbne en html-side, som skrev hvor mange point som man havde opnået. Justincase: Husk at skrive din løsning som et svar, ikke en kommentar - mine 60 point går til dig. - Cool Script!!!
var rigtigeSvar = new Array(4) rigtigeSvar[1] = "abc"; rigtigeSvar[2] = "bac"; rigtigeSvar[3] = "cba"; rigtigeSvar[4] = "bca";
Hvor (for rigtigeSvar[1]) a giver 1 point, b 2 og c 3 point i det første spørgsmål.
Nu skal du så ændre bahandlSvar funktionen til :
function behandlSvar(svar) { point += rigtigeSvar[nuvSpm].indexOf(svar)+1; nuvSpm++; if (nuvSpm <= antalSpm) { remote.location.href="spm"+nuvSpm+".htm"; remote.focus(); } else { remote.close(); results(); } }
Og til sidst indsætte denneher funktion :
function results() { var resulPage; if (point >= 10 && point <= 12) {resultPage = "res1.htm";} if (point >= 7 && point <= 9) {resultPage = "res2.htm";} if (point >= 4 && point <= 6) {resultPage = "res32.htm";} if (point <= 3) {resultPage = "res4.htm";} window.location.href = resultPage; }
Med hensyn til pointene, så må folk selv om det. En ide kan stadig være god, selvom folk ikke fanger den. For mig er det her lidt god træning, og en god chance for ikke at arbejde hele tiden. Desuden får man selv ideer af at svare :D
Og udover det har har du givet mig pointene ved at accepter mit svar.
Resultaterne kommer i hovedvinduet !! Hvis du hellere vil have resultaterne i romote window, så fjern linien :
remote.close();
i behandlSvar funktionen. Og udskift så :
window.location.href = resultPage;
med
remote.location.href = resultPage;
if funktionen results
Hvis du vil have remote window til at vise præcis hvor mange point man fik skal du stadig sletter remote.close() og så udskifte funktionen resultes med følgende :
function results() { remote.document.open(); remote.document.write("Du fik "+point+" point."); remote.document.close(); }
Til Justincase>> Hejsa jeg har siddet og leget lidt med din og cardkings javascript quiz. Den er faktisk helt fed, men jeg støder ind i et problem, og jeg tænkte at du kunne være manden til at fortælle mig hvad der er galt.
1) for det første så har jeg et prob. efter det sidste spørgsmål, der linker min spg.side videre til ingenting og hvis jeg så vælger back og trykker svar igen så kommer resultatet i hovedvinduet, hvordan kan dette løses?
2) så vil jeg gerne have det præcise pointtal skrevet på min resultatside, og har derfor prøvet med det her:
function results() { var resulPage; if (point >= 10 && point <= 12) {resultPage = "res1.htm"; document.write("du fik "+point+" point."); } if (point >= 7 && point <= 9) {resultPage = "res2.htm"; document.write("du fik "+point+" point.");} if (point >= 4 && point <= 6) {resultPage = "res3.htm"; document.write("du fik "+point+" point.");} if (point <= 3) {resultPage = "res4.htm"; document.write("du fik "+point+" point.");} window.location.href = resultPage; }
det betyder dog bare at hvis du trykker back på browseren så kan du se pointtallet i spm?.htm siden, men ellers ikke, så hvordan får jeg det på min resultatside.
Nå men jeg skylder dig også nogle points fra et tidligere spørgsmål som gik til en anden, så dem kunne du jo få hvis du svarede på dette her, jeg laver et spørgsmål til dig, hvis du svarer og sætter 50 point på højkant.
På forhånd tak --:TheArtist:--
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.