Avatar billede nomisweb Nybegynder
25. november 2007 - 19:57 Der er 8 kommentarer og
1 løsning

Simpel brug af onMouseover og new Image?

Hej,

Jeg har kigget lidt rundt efter en javascript funktion jeg kan bruge til min menu, men det virker rimelig besværligt.
Jeg har en menu bygget op af billeder og når man laver mouseover på disse billeder skal de skiftes ud med en et andet billede, omvendt ved mouseout. Menuen er dynamisk, dvs. den henter billeder vha php og der er derfor ikke et fast mål på billederne.

jeg troede jeg kunne gøre noget i denne retning:
<a href="<?php echo $url; ?>" onmouseover="new Image(<?php echo $image2; ?>);" onmouseout="new Image(<? echo $image; ?>);"><img src="<? echo $image; ?>" border="0" alt="<? echo $name; ?>" /></a>

Men alt hvad jeg har fundet so far skal man definere en function først med diverse parametre, kan det virkelig være den eneste måde at gøre det på?

Og lige som tillæg, kan man godt bruge php i javascript? (bruger ikke javascript så meget endnu!)

Tak for hjælpen
S
Avatar billede w13 Novice
25. november 2007 - 20:06 #1
Du kan gøre sådan her:
onmouseover="this.firstChild.setAttribute('src','<?php echo $image2 ?>')"
Avatar billede w13 Novice
25. november 2007 - 20:08 #2
På den måde går den ind i <a>'ens første "barn" (<img>-tag'et) og sætter src til $image2.

Og ja, du kan bruge PHP i javascript som du gør nu. Men husk, at php'en kun genererer HTML/CSS/JavaScript ved sidens indlæsning.
Avatar billede nomisweb Nybegynder
25. november 2007 - 20:31 #3
Jamen det virker jo umiddelbart som jeg gerne vil.

Vil det sige at man også kan have en second child? og at man også kan ændre på alle andre attributter i de forskellige tags. eks. siger 'border', '3px'?

Har du evt. et godt link til hvor man kan læse mere om den slags? eller måske en god gammeldavs bog?
For man kan jo lave rigtig mange sjove ting på denne måde kan jeg forestille mig. Vil du sige det er bedst at lave en funktion som jeg har set andre steder, eller det her forslag som jeg efterlyste og du så har hjulpet med?
Avatar billede w13 Novice
25. november 2007 - 20:59 #4
En funktion ville nok være bedst at lave.

Har ikke umiddelbart nogle gode links. Eller jo, mit bedste link er http://www.w3.org/TR/DOM-Level-3-Core/ , men det er meget svært at finde rundt i for de fleste, indtil man har "træningen" i det. Det kaldes DOM (Document Object Model), og i det arbejder man bl.a. med "forældre", "børn" og "søskende".

Du kan hente stort set alle attributter på den måde, dog med et par undtagelser. Hvis du bruger style="border:3px" kan du kun hente border med .style.border altså uden getAttribute("border"), men hvis du bruger border="3px" kan du sagtens bruge getAttribute("border"). Derudover er der en bug ved tekstfelters value, som gør, at hvis du henter getAttribute("value"), så vises kun den value, der var ved load af siden, og altså ikke det som brugeren siden har indtastet. Der skal du bruge .value i stedet. Og sidst skal du - for at få Internet Explorer til at samarbejde - bruge getAttribute("className") frem for getAttribute("class"), da de af en eller anden grund syntes, at det var federe.

Du kan bare spørge mig her, hvis du har spørgsmål ang. JavaScript DOM.

F.eks. kan du arbejde med børn sådan her:

this.childNodes[0]
this.childNodes[1]
this.childNodes[2]
osv.

eller:
this.firstChild
this.firstChild.nextSibling
this.firstChild.nextSibling.nextSibling
this.lastChild.previousSibling
Avatar billede w13 Novice
25. november 2007 - 21:00 #5
Funktionen ku' være:

<script type="text/javascript">
function ChangeImg(obj,img){
  obj.firstChild.setAttribute("src",img)
}
</script>

og så kalder du funktionen med:
onmouseover="ChangeImg(this,'<?php echo $image2; ?>')"
Avatar billede nomisweb Nybegynder
25. november 2007 - 21:08 #6
Ok, tusind tak for hjælpen. Jeg må ind og kigge på DOM.
Fedt med din forklaring, tak! :-)
Sender du egentlig et svar?
Avatar billede w13 Novice
25. november 2007 - 21:25 #7
Jo, det kan jeg da godt. =)
Avatar billede nomisweb Nybegynder
25. november 2007 - 21:29 #8
Tak!
Avatar billede w13 Novice
25. november 2007 - 21:40 #9
Og tak for point!
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