Avatar billede long Nybegynder
11. marts 1999 - 00:00 Der er 5 kommentarer og
1 løsning

Mystik...

Mit problem er at hvis jeg initierer CurrentImg med et billede som findes (læs: NAME="5" eller  NAME="7" eller  NAME="9") virker nedenstående. MEN. Hvis jeg initierer CurrentImg med f.eks. 4 virker det ikke.
Med "virker ikke" menes der at JavaScripten ikke kører if sætningen med 'click' igennem.
Hvad helvede sker der?

Jeg har følgende HTML:


<TR>
  <TD><IMG SRC="img/blank.gif" WIDTH="5" HEIGHT="1" ALT=""></TD>
  <TD><IMG SRC="img/blank.gif" NAME="5" WIDTH="5" HEIGHT="11" ALT="" BORDER=0>&nbsp;</TD>
  <TD><FONT FACE="Arial,Helvetica" SIZE="2"><A HREF="produkter/sorteringsmapper.html" TARGET="main" onMouseOver="JFLshift('over',5);" onMouseOut="JFLshift('out',5);" onClick="JFLshift('click',5);">Sorteringsmapper</A></FONT></TD>
</TR>
<TR>
  <TD><IMG SRC="img/blank.gif" WIDTH="5" HEIGHT="1" ALT=""></TD>
  <TD><IMG SRC="img/blank.gif" NAME="7" WIDTH="5" HEIGHT="11" ALT="" BORDER=0>&nbsp;</TD>
  <TD><FONT FACE="Arial,Helvetica" SIZE="2"><A HREF="produkter/protokoller.html" TARGET="main" onMouseOver="JFLshift('over',7);" onMouseOut="JFLshift('out',7);" onClick="JFLshift('click',7);">Protokoller</A></FONT></TD>
</TR>
<TR>
  <TD><IMG SRC="img/blank.gif" WIDTH="5" HEIGHT="1" ALT=""></TD>
  <TD><IMG SRC="img/blank.gif" NAME="9" WIDTH="5" HEIGHT="11" ALT="" BORDER=0>&nbsp;</TD>
  <TD><FONT FACE="Arial,Helvetica" SIZE="2"><A HREF="produkter/diversemapper.html" TARGET="main" onMouseOver="JFLshift('over',9);" onMouseOut="JFLshift('out',9);" onClick="JFLshift('click',9);">Diverse</A></FONT></TD>
</TR>


...og følgende java script:


if (BrowserOK) { CurrentImg = 5 }

function JFLshift (JFLaction, Img) {
    if (BrowserOK) {
        if (JFLaction == 'over' && Img != CurrentImg) {   
            document[Img].src = LinkImages[1].src
        }
        if (JFLaction == 'out' && Img != CurrentImg) {
            document[Img].src = LinkImages[3].src
        }
        if (JFLaction == 'click' && Img != CurrentImg) {
            document[Img].src = LinkImages[2].src
            document[CurrentImg].src = LinkImages[3].src
            CurrentImg = Img
        }
    }
}
Avatar billede jumper Nybegynder
11. marts 1999 - 13:44 #1
Det er JFLshift den er gal med.

Hvis det skal virke, skal det se sådan her ud:

function JFLshift (JFLaction, Img) {
    if (BrowserOK) {
        if (JFLaction == 'over' && Img != CurrentImg) {   
            document.images[Img].src = LinkImages[1].src
        }
        if (JFLaction == 'out' && Img != CurrentImg) {
            document.images[Img].src = LinkImages[3].src
        }
        if (JFLaction == 'click' && Img != CurrentImg) {
            document.images[Img].src = LinkImages[2].src
            document.images[CurrentImg].src = LinkImages[3].src
            CurrentImg = Img
        }
    }
}

Du havde glemt at henvise til Img og CurrentImg i document.images. Det bliver du nødt til, hvis du skal kalde billederne med deres navn.

/Thor
Avatar billede jumper Nybegynder
11. marts 1999 - 13:54 #2
btw, du skal også huske at ændre dine links.

Du skal ændre

<A HREF="produkter/sorteringsmapper.html" TARGET="main" onMouseOver="JFLshift('over',5);" onMouseOut="JFLshift('out',5);" onClick="JFLshift('click',5);">

til

<A HREF="produkter/sorteringsmapper.html" TARGET="main" onMouseOver="JFLshift('over','5');" onMouseOut="JFLshift('out','5');" onClick="JFLshift('click','5');">

Husk at gøre det ved hvert af dine links. Ved at sætte 2 styks '' rundt om den anden parameter ved funktionskaldene til onMouseover, onMouseout og onClick, viser du at det er en streng (string), istedet for et tal (integer).

/Thor
Avatar billede long Nybegynder
11. marts 1999 - 19:05 #3
Det hjalp ikke. Din version virker hvis det er billedets nummer jeg henviser til. Det er det ikke.
Avatar billede jumper Nybegynder
13. marts 1999 - 14:55 #4
Det vil virke, hvis du giver billederne et fornuftigt navn, istedet for et nummer. Når du bruger et nummmer som navn, bliver browseren forvirret. Eller rettere, du kan ikke se forskel på om det er en string eller en integer.

Giv dem et normalt navn, så virker min kode

/Thor
Avatar billede long Nybegynder
14. marts 1999 - 11:33 #5
Det gør jeg også nu.
Billederne hedder a, b, c, d, osv.

Her er mit script:

<SCRIPT LANGUAGE="JavaScript">
<!--
// window.onerror = null;

if (document.images) BrowserOK = true;

if (BrowserOK) {
        LinkImages = new Array();
        LinkImages[1]    = new Image();
        LinkImages[1].src = "img/pil_over.gif";
        LinkImages[2]    = new Image();
        LinkImages[2].src = "img/pil_on.gif";
        LinkImages[3]    = new Image();
        LinkImages[3].src = "img/blank.gif";
}

if (BrowserOK) { CurrentImg = 'a' }

function JFLshift (JFLaction, Img) {
        if (BrowserOK) {
                if (JFLaction == 'over' && Img != CurrentImg) {
                        eval('document.' + Img + '.src = LinkImages[1].src')
                }
                if (JFLaction == 'out' && Img != CurrentImg) {
                        eval('document.' + Img + '.src = LinkImages[3].src')
                }
                if (JFLaction == 'click' && Img != CurrentImg) {
                        eval('document.' + Img + '.src = LinkImages[2].src')
                        eval('document.' + CurrentImg + '.src = LinkImages[3].src')
                        CurrentImg = Img
                }
        }
}
// -->
</SCRIPT>
Avatar billede jfl Nybegynder
14. marts 1999 - 12:51 #6
Dit problem opstår fordi browseren fejler i linien:
eval('document.' + CurrentImg + '.src = LinkImages[3].src')
hvis CurrentImg er sat til et billede som ikke findes.

Derfor sæt CurrentImg = 'none' fra starten af, og test på dette:

if (BrowserOK) { CurrentImg = 'none' }

function JFLshift (JFLaction, Img) {
    if (BrowserOK) {
        if (JFLaction == 'over' && Img != CurrentImg) {   
            eval('document.' + Img + '.src = LinkImages[1].src')
        }
        if (JFLaction == 'out' && Img != CurrentImg) {
            eval('document.' + Img + '.src = LinkImages[3].src')
        }
        if (JFLaction == 'click' && Img != CurrentImg) {
            eval('document.' + Img + '.src = LinkImages[2].src')
            if (CurrentImg != 'none') {
                eval('document.' + CurrentImg + '.src = LinkImages[3].src')
            }
            CurrentImg = Img
        }
    }
}
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