Avatar billede trabolt Nybegynder
31. maj 2002 - 20:22 Der er 7 kommentarer og
1 løsning

Fejl i script

Jeg har brugt et quiz-scipt fra

http://wsabstract.com/script/script2/comboquiz.shtml

men har nu desværre opdaget at der er fejl i scriptet. Når man svarer korrekt i quizzen, er svaret af og til "undefined".
Er der nogen der kan finde fejlen, jeg kan ikke?
Avatar billede skovenborg Nybegynder
31. maj 2002 - 20:42 #1
Har prøvet quizzen, men kan ikke se det såkaldte "undefined". Hvornår sker det egentlig?
Avatar billede skovenborg Nybegynder
31. maj 2002 - 20:46 #2
Skal der ikke stå:
var temp3=temp2.options[temp2.selectedIndex].value ?
Avatar billede skovenborg Nybegynder
31. maj 2002 - 20:54 #3
function responses(){
Prøv det her:

var temp2=document.instantquiz.theresponse
var temp3=temp2.options[temp2.selectedIndex].value
if (temp3 == "----");
else if (temp3!=solution[whichone]&&temp2.selectedIndex!=0)
Avatar billede jespernaur Nybegynder
31. maj 2002 - 21:04 #4
Hvis du har rettet i koden eller filen popsolution.js, bliver det nødvendigt at se dine versioner. Du må også angive, hvilke spørgsmål og hvilke svar, der giver 'undefined'

Mvh
Jesper Naur
Avatar billede trabolt Nybegynder
31. maj 2002 - 21:35 #5
Det script der er link til, giver svaret "undefined" ca. hver 6.-7. gang. Når svaret er rigtigt. Jeg har selv 20 [compliments] så jeg får sjældnere "undefined"
Avatar billede trabolt Nybegynder
31. maj 2002 - 21:59 #6
Jeg har prøvet din løsning, men jeg har stadig samme problem - om end sjældnere
Avatar billede jespernaur Nybegynder
31. maj 2002 - 23:50 #7
Problemet er den 'tilfældige' udregning af indexet til komplimenten, når man har svaret rigtigt.

Der ønskes et index i intervallet [0..compliments.length-1], altså i det oprindelige
eksempel [0..6] (her er compliments.length = 7).

Der står:

      Math.round(Math.random()*compliments.length-1)

Da Math.round runder opad/nedad til nærmest heltal, vil resultatet blive -1 hvis
Math.random returnerer et tal mindre end 1/14. Hermed indiceres compliments med -1, hvilket
giver undefined.

Den rigtige løsning er:

      Math.floor(Math.random()*compliments.length)

Der skal altså stå:

      document.instantquiz.thesolution.value=compliments[Math.floor(Math.random()*compliments.length)]


Mvh
Jesper Naur
Avatar billede trabolt Nybegynder
01. juni 2002 - 13:32 #8
Tusind tak, det virker!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester