Avatar billede vifa Novice
24. august 2011 - 18:16 Der er 8 kommentarer og
1 løsning

Random nummer, ikke det samme to gange i træk

Hej,

Jeg er ikke så stærk i JavaScript. Derfor skal jeg bruge lidt hjælp til noget jeg har fundet på Internettet.

Jeg har to billeder jeg skal have til at loade under hinanden, og det skal være forskellige billeder hver gang.


Lige nu har jeg denne kode:
----------------------------

        <script type="text/javascript">

        var tal         = Math.random() * 8;
        var afrund_tal     = Math.round(tal);
       
        var tal2         = Math.random() * 8;
        var afrund_tal2     = Math.round(tal2);
                                       
        document.write('<img src="billeder/billeder/resize/' + afrund_tal + '.jpg" id="thephoto">');
        document.write('<img src="billeder/billeder/resize/' + afrund_tal2 + '.jpg" id="thephoto">');
                                           
        </script>       
----------------------------------------------------------------

Den laver et random nummer, men den må ikke lave det samme nummer to gange i træk. Og 'tal2' må ikke være det samme som 'tal'. Det er her mine manglende evner sætter sine begrænsninger.

Derudover, har jeg problemer med at få billede 2 frem :S



Jeg håber i kan hjælpe mig lidt videre, jeg har siddet fast her længe.
Avatar billede heinzdmx Nybegynder
24. august 2011 - 18:28 #1
Du kunne prøve at indsætte en while-løkke der kører indtil værdien ikke er ens mere

<script type="text/javascript">

        var tal        = Math.random() * 8;
        var afrund_tal    = Math.round(tal);

        var tal2        = Math.random() * 8;
        var afrund_tal2    = Math.round(tal2);

        while (afrund_tal == afrund_tal2)
        {
            tal2        = Math.random() * 8;
            afrund_tal2 = Math.round(tal2);
        }
                       
        document.write('<img src="billeder/billeder/resize/' + afrund_tal + '.jpg" id="thephoto">');
        document.write('<img src="billeder/billeder/resize/' + afrund_tal2 + '.jpg" id="thephoto">');
                                           
        </script>
Avatar billede erikjacobsen Ekspert
24. august 2011 - 19:28 #2
Eller...

1) Vælg det første "tal".
2) Vælg et "x" mellem 1 og 7 inklusive.
3) "tal2" = "tal"+"x"
4) Hvis "tal2" større end 7, så træk 8 fra.

Ingen whileløkke, man aldrig hvor mange der løbes igennem. Nummer to tal er nødvendigvis forskellig fra det første.
Avatar billede vifa Novice
25. august 2011 - 14:02 #3
[erikjacobsen]

Jeg har fået det til at virke ud fra dit forslag. Men jeg har stadig problemer med at få vist begge billeder. Hvis jeg fjerner id="thephoto" så kan jeg sagtens få vist begge - men ellers ikke..


Her er det javascript der definere id'et:

-------------------------------------------
document.write("<style type='text/css'>#thephoto {visibility:hidden;}</style>");

function initImage() {
    imageId = 'thephoto';
    image = document.getElementById(imageId);
    setOpacity(image, 0);
    image.style.visibility = "visible";
    fadeIn(imageId,0);
}
function fadeIn(objId,opacity) {
    if (document.getElementById) {
        obj = document.getElementById(objId);
        if (opacity <= 100) {
            setOpacity(obj, opacity);
            opacity += 10;
            window.setTimeout("fadeIn('"+objId+"',"+opacity+")", 100);
        }
    }
}
function setOpacity(obj, opacity) {
    opacity = (opacity == 100)?99.999:opacity;
    // IE/Win
    obj.style.filter = "alpha(opacity:"+opacity+")";
    // Safari<1.2, Konqueror
    obj.style.KHTMLOpacity = opacity/100;
    // Older Mozilla and Firefox
    obj.style.MozOpacity = opacity/100;
    // Safari 1.2, newer Firefox and Mozilla, CSS3
    obj.style.opacity = opacity/100;
}
window.onload = function() {initImage()}




Kan fejlen mon ligge heri ?
Avatar billede erikjacobsen Ekspert
25. august 2011 - 14:06 #4
Du "kan ikke" have to elementer med samme id - er det derfor?
Avatar billede vifa Novice
25. august 2011 - 14:14 #5
Nå okay.. Det troede jeg bare man godt kunne..

Smid et svar op, så giver jeg point...
Avatar billede erikjacobsen Ekspert
25. august 2011 - 14:15 #6
Jeg samler slet ikke på point, tak.
Avatar billede vifa Novice
25. august 2011 - 14:23 #7
Okay, men du skal ihvertfald have tak - du har lige hjulpet mig et skridt videre :-)
Avatar billede olebole Juniormester
25. august 2011 - 15:59 #8
<ole>

En name attribut kan godt 'genbruges' i samme dokument (men selvfølgelig kun på elementer, der kan have en name attribut).

En id attribut skal derimod altid være unik i dokumentet.

Tænk det som et personnavn (name) og et personnummer (id). Der er mange, som hedder Ole i Danmark - men der kan kun findes én med mit personnummer  =)

/mvh
</bole>
Avatar billede Slettet bruger
27. august 2011 - 09:27 #9
var afrund_tal    = Math.round(Math.random() * 4);
var afrund_tal2  = Math.round(Math.random() * 4) + 4;
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