Avatar billede kolzie Nybegynder
30. marts 2002 - 22:57 Der er 13 kommentarer og
1 løsning

undefined?!?!

http://www.thunderbear.tk kører jeg nederst, med tilfældigt billede. Der er 3 forsk. Men en sjælden gang kommer der ikke noget billede, i stedet for står der bare "Undefined".
I kan se koden her:
<script language="Javascript">
nummer=Math.round(Math.random()*3)+1
if(nummer==1){
var billede="<img src=business5.jpg border='0' bordercolor='#0080C0'>" }
if(nummer==2){
var billede="<img src=business6.jpg border='0' bordercolor='#0080C0'>" }
if(nummer==3){
var billede="<img src=business7.jpg border='0' bordercolor='#0080C0'>" }
document.write(billede)
</script>

OG NEJ LAD VÆRE MED AT KOMMENTERE HVOR FLOT SIDEN ER O.S.V!!
Avatar billede cms Nybegynder
30. marts 2002 - 23:00 #1
den er jo pissegrim ! *G*
Avatar billede erikjacobsen Ekspert
30. marts 2002 - 23:02 #2
var billede;
if (nummer==1) { billede=.... }
else if (nummer==2) { billede=... }
else { billede... }
document.write(billede)
Avatar billede cms Nybegynder
30. marts 2002 - 23:04 #3
Math.random() returnerer mellem 0 og 1 inklusive. Der er derfor en risiko for at den rammer 1*3 + 1 = 4.
Skriv istedet: Math.round(Math.random()*2)+1
så vil den returnere fra 1..3
Avatar billede cms Nybegynder
30. marts 2002 - 23:05 #4
sorry! forbandet offlinewriting
Avatar billede kolzie Nybegynder
30. marts 2002 - 23:09 #5
Ok, jeg prøver lige begge forslag, hvis begge virker deler jeg midt over.
Avatar billede erikjacobsen Ekspert
30. marts 2002 - 23:10 #6
Nej, csm, det er ikke inkl. 1.0. Men fejlen ligger egentlig ikke
i det jeg skrev, men I at man bør anvende Math.floor i stedet for
Math.round. Som skrevet i spørgsmålet returneres tal mellem
1.0 og 3.999999999, der så afrundes, hvorved 4 af og til indtræffer.
Med floor fjernes det efter kommaet blot.

Min løsning var det ultimative eksempel på defensiv programmering,
hvis man ikke kan overskue hvad der sker.....:)
Avatar billede kolzie Nybegynder
30. marts 2002 - 23:15 #7
Nå, det var sq mærkeligt, jeg havde regnet med at erikjacobsen's forslag også virkede, det virkede MEGET rimeligt, men det gjorde det ikke. Aner ikke om jeg har lavet fejl, men det handler trods alt kun om 5 point... Som så går til Cms! For det virkede 100% korrekt
Avatar billede kolzie Nybegynder
30. marts 2002 - 23:15 #8
jeg prøver lige igen, jeg glemte lige noget tekst fra erikjacobsens forslag, øjeblik prøver igen
Avatar billede kolzie Nybegynder
30. marts 2002 - 23:18 #9
Hmmm nej, kan stadig ikke få den til at virke. 10 point til CMS, men det er sq mærkeligt at den ikke virker, det må jeg sige...
Avatar billede jakoba Nybegynder
30. marts 2002 - 23:20 #10
cms har ret, det er din måde at beregne random, men rettelsen er:

nummer=Math.floor(Math.random()*3)+1;

med floor rundes der altid nedad så du ikkke risikerer at ende med tallet 4.

ellers ar alt ok, bortsetfra erikjacobsens besparelse ved at bygge ifsætningerne sammen.

mch JakobA
Avatar billede jakoba Nybegynder
30. marts 2002 - 23:22 #11
og det havde erikjacobsen da vist allerede sagt. sorry
Avatar billede erikjacobsen Ekspert
30. marts 2002 - 23:36 #12
Og konkret vil
  Math.round(Math.random()*2)+1
give 1 og 3 i hver 25% af tilfældene, men 2 i 50% af tilfældene.
Avatar billede cms Nybegynder
30. marts 2002 - 23:46 #13
sorry. jeg læste bare lidt for hurtigt i manualen og faldt så i søvn :)
Avatar billede kolzie Nybegynder
30. marts 2002 - 23:47 #14
cms >> Lol... Nu gør jeg faktisk det som jakoba og erikjacobsen sagde...
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