Avatar billede des_84 Nybegynder
11. juli 2006 - 00:10 Der er 6 kommentarer og
1 løsning

links skal skifte udseende når musen føres over

Hejsa.

Jeg er meget ny til java og generelt web, men har alligevel taget mig sammen og arbejder på en hjemmeside.
men jeg har nogle problemer med min menu som jeg gerne vil have til at se godt ud via et javascript som skulle kunne skifte et billede ud når musen føres over.
Umiddelbart virker det også fint, men når jeg gentager scriptet som vist for neden med et andet billede(andet menupunkt)virker scriptet ikke længere.
Hvad kan det være? Skal linksene have hver sin div inde i menuen for at fungere så man seperere java koden?
Sourcen kan findes her: www.dez.dk/source/source.txt
Avatar billede steak Nybegynder
11. juli 2006 - 00:25 #1
her kan du se alt hvad du skal gøre: http://www.echoecho.com/dk/jsbuttons02.htm
Avatar billede jakoba Nybegynder
11. juli 2006 - 07:25 #2
En ting du skal have lært som nybegynder er at Java og JavaScript er 2 helt forskellige sprog. Det svar steak giver ovenfor er fint, men som hovedregel fåd du de bedste svar whis du stiller dine spørgsmål i den korrekte kattegori. I dette tilfælde ville det være:
    http://www.eksperten.dk/spm/Programmering/Script/JavaScript/

mvh JakobA
Avatar billede des_84 Nybegynder
15. juli 2006 - 16:29 #3
Det ser meget fint ud, men gutten der skriver scriptet fortæller jo om hvordan man sætter koden ind i et html dokument.
Jeg tilføjer jo mine billeder via css, hvordan gøres det så?
Jakoba: tak for dit råd, det vil jeg bruge fremover.
Avatar billede des_84 Nybegynder
19. juli 2006 - 19:00 #4
Ikke det jeg ledte efter må man sige..
øv øv..
Avatar billede jakoba Nybegynder
19. juli 2006 - 21:23 #5
Nok en af de væsentligst forskelle på folk der bruger experten er hvilken hvad SLAGS svar de ønsker.

Som nybegynder wil de ofte være "hvad skal jeg skrive for at få den og den effekt". svaret kan så være "<div hkts4598gthrwwwmntpqr>" og hvis det virker at skrive sådan vil nybegynderen være glad, uden iøverigt at ane noget om hvad 'hkts4598gthrwwwmntpqr' betyder og hvorfor det virker. Fokus er på at få en webside.

For de mere øvede ændres fokus i retning af at forstå hvad der foregår og hvorfor tingene virker. Når man begynder at lære det kan man nemlig selv designe nye programmer og få dem til at gøre ting ingen andre tidligere har gjort. Det er det jeg synes er sjovt, men for at komme så vidt skal nam jo desværre have lært en hel masse 'hkts4598gthrwwwmntpqr' koder udenad så man bare bruger dem når der er brug for det.

Det der gik galt i dit oprindelige eksempel var at du definerede de samme navne 2 gange. Det er tilladt i javascript. men det resulterer ikke i at samme navn har 2 forskellige betydninger. Anden gang du definerer et navn (fx funktionen 'skiftbillede') bliver den første definition det navn havde glemt, så kun den sidste definition gælder.

Så en mulig måde at løse problemet ville være and ændre navnene i scriptet for hvert link. Det er en elendig løsning, men det ville virke:
            <div class="Menu">
                <script type="text/javascript">
                    billede1_a = new Image();
                    billede1_a.src = "img/menutabforside.gif";

                    billede2_a = new Image();
                    billede2_a.src = "img/mouseover/forside.gif";

                    function skiftbillede_a(img_name,img_src) {
                    document[img_name].src=img_src;
                    }
                </script>
                <a href="default.htm"
                onmouseover="skiftbillede_a('eksempel_a','img/mouseover/forside.gif')"
                onmouseout="skiftbillede_a('eksempel_a','img/menutabforside.gif')">
                <img name="eksempel_a" src="img/menutabforside.gif" alt="F&#65533;r musen over dette billede"
                style="border:none;" /></a>
               
               

                <script type="text/javascript">
                    billede1_b = new Image();
                    billede1_b.src = "img/menutabsoeg.gif";

                    billede2_b = new Image();
                    billede2_b.src = "img/mouseover/soeg.gif";

                    function skiftbillede_b(img_name,img_src) {
                    document[img_name].src=img_src;
                    }
                </script>
                <a href="default.htm"
                onmouseover="skiftbillede_b('eksempel_b','img/mouseover/soeg.gif')"
                onmouseout="skiftbillede_b('eksempel_b','img/menutabsoeg.gif')">
                <img name="eksempel_b" src="img/menutabsoeg.gif" alt="F&#65533;r musen over dette billede"
                style="border:none;" /></a>
            </div>

Og det er her forståelse kommer in i det. HVILKE navne skal være forskellige. Med nogen scripts ville ovenstående virkelig være den korrekte løsning. men i dette tilfælde er der faktisk kun eet navn du behøver at ændre på. det navn du bruger til at fortælle scriptet hvilket <img billede der skal ændre denne gang ('eksempel'). Når du giver alle dine billeder det samme navn vil det kun være det første af dem der nogensinde ændres. (strengt tager er det også forbudt efter HTML reglerne at bruge samme navn to gange i samme scope)

Så for dig er scriptet nedenfor meget bedre:
            <div class="Menu">
                <script type="text/javascript">
                        // du behøver kun at preloade de billeder der
                        // er 'onMouseOver', de andre loades sammen med siden
                    billede2_a = new Image();
                    billede2_a.src = "img/mouseover/forside.gif";
                    billede2_b = new Image();
                    billede2_b.src = "img/mouseover/soeg.gif";

                        // og funktionen een gang
                    function skiftbillede_a(img_name,img_src) {
                        document[img_name].src=img_src;
                    }
                </script>

<!-- og så skal hvert enkelt menybillede have et forskelligt navn,
    og det navn skal bruges når du kalder funktionen
-->
                <a href="default.htm"
                onmouseover="skiftbillede('eksempel_a','img/mouseover/forside.gif')"
                onmouseout="skiftbillede('eksempel_a','img/menutabforside.gif')">
                <img name="eksempel_a" src="img/menutabforside.gif" alt="F&#65533;r musen over dette billede"
                style="border:none;" /></a>
               
                <a href="default.htm"
                onmouseover="skiftbillede('eksempel_b','img/mouseover/soeg.gif')"
                onmouseout="skiftbillede('eksempel_b','img/menutabsoeg.gif')">
                <img name="eksempel_b" src="img/menutabsoeg.gif" alt="F&#65533;r musen over dette billede"
                style="border:none;" /></a>
            </div>

Der er bare det problem at jeg nu har introduceret nye ting såsom 'scope','HTML reglerne','PreLoad' der kan gøre det besværligt at fatte svaret. Og det var forresten samme svar steak gav, blot mindre målrettet :-))

mvh JakobA

PS: du tilføjer IKKE dine billeder via CSS. Det er en helt tredie mulighed.
Avatar billede jakoba Nybegynder
19. juli 2006 - 21:36 #6
Ups:
                        // og funktionen een gang
                    function skiftbillede(img_name,img_src) { // jeg havde glemt at fjerne '_a' fra funktionens navn.
Avatar billede des_84 Nybegynder
23. juli 2006 - 12:47 #7
Jamen så blev jeg jo så klog:)
Man må sige det er meget man skal sætte sig ind i for at få noget godt ud af det.
Umiddelbart ville det måske være en idé at vente lidt med designetså, og lære PHP´en først som jeg også er i gang med, ellers er jeg bange for at jeg mikser det hele sammen.
Er glad for at du tog dig tid til at skrive alt det ned jakoba.
Mange tak.
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

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