Avatar billede remedy Nybegynder
01. januar 2009 - 21:33 Der er 20 kommentarer og
1 løsning

Preload images + onMouseOver/out problem.

Hejsa..

Et klogt hovede, der kan fortælle mig, hvad jeg har gjort galt? :)

Vil preloade filerne til menuen, så det hele kan bruges til menuen med mouseOver/Out - men af en eller anden grund, vil det altså ikke virke.
Jeg bruger følgende i <HEAD>:

<script type="text/javascript">
var homeoff = new Image();
var homeon = new Image();
var aboutoff = new Image();
var abouton = new Image();
var eventoff  = new Image();
var eventon = new Image();
var affiliatesoff = new Image();
var affiliateson = new Image();
var pressoff = new Image();
var presson = new Image();
var contactoff = new Image();
var contacton = new images();
homeoff.src="gfx/menu/homeoff.jpg";
homeon.src="gfx/menu/homeon.jpg";
aboutoff.src="gfx/menu/aboutoff.jpg";
abouton.src="gfx/menu/abouton.jpg";
eventoff.src="gfx/menu/eventoff.jpg";
eventon.src="gfx/menu/eventon.jpg";
affiliatesoff.src="gfx/menu/affiliatesoff.jpg";
affiliateson.src="gfx/menu/affiliateson.jpg";
pressoff.src="gfx/menu/pressoff.jpg";
presson.src="gfx/menu/presson.jpg";
contactoff.src="gfx/menu/contactoff.jpg";
contacton.src="gfx/menu/contacton.jpg";
function loading(){
document.Homeon.src=homeon.src;
document.Abouton.src=abouton.src;
document.Eventon.src=eventon.src;
document.Affiliateson.src=affiliateson.src;
document.Presson.src=presson.src;
document.Contacton.src=contacton.src;
}
function unloading(){
document.Homeoff.src=homeoff.src;
document.Aboutoff.src=aboutoff.src;
document.Eventoff.src=eventoff.src;
document.Affiliatesoff.src=affiliatesoff.src;
document.Pressoff.src=pressoff.src;
document.Contactoff.src=contactoff.src;
}
</script>


Hvor menuen er placeret, er der brugt:

<a href="?page=home" onMouseOver="document.Homeon.src=homeon.src;" onMouseOut="document.Homeoff.src=homeoff.src;">
<img src="gfx/menu/homeoff.jpg" name="Home" width="60" height="28" border="0" /></a>

<a href="?page=about" onMouseOver="document.Abouton.src=abouton.src;" onMouseOut="document.Aboutoff.src=aboutoff.src;">
<img src="gfx/menu/aboutoff.jpg" name="About" width="70" height="28" border="0" /></a>

<a href="?page=event" onMouseOver="document.Eventon.src=eventon.src;" onMouseOut="document.Eventoff.src=eventoff.src;">
<img src="gfx/menu/eventoff.jpg" name="Event" width="63" height="28" border="0" /></a>

<a href="?page=affiliates" onMouseOver="document.Affiliateson.src=affiliateson.src;" onMouseOut="document.Affiliatesoff.src=affiliatesoff.src;">
<img src="gfx/menu/affiliatesoff.jpg" name="Affiliates" width="108" height="28" border="0" /></a>

<a href="?page=press" onMouseOver="document.Presson.src=presson.src;" onMouseOut="document.Pressoff.src=pressoff.src;">
<img src="gfx/menu/pressoff.jpg" name="Press" width="65" height="28" border="0" /></a>

<a href="?page=contact" onMouseOver="document.Contacton.src=contacton.src;" onMouseOut="document.Contactoff.src=contactoff.src;">
<img src="gfx/menu/contactoff.jpg" name="Contact" width="124" height="28" border="0" /></a>

De nødvendige filer og mapper, har de nødvendige læse/skrive tilladelser
Live test kan ses på følgende: www.5frames.dk/diverse/carrotmob/main.php

Hjælp! :)
Avatar billede olebole Juniormester
01. januar 2009 - 21:47 #1
<ole>

For det første har du en fejl her:
    var contacton = new images(); // Der er et 's' for meget

Dernæst kalder du forkert. Der skal stå:
    <a href="?page=home" onmouseover="document.getElementById('Homeon').setAttribute('src',homeon.src)" onmouseout="document.getElementById('Homeon').setAttribute('src',homeoff.src)">
<img src="gfx/menu/homeoff.jpg" id="Home" width="60" height="28" border="0"></a>

/mvh
</bole>
Avatar billede olebole Juniormester
01. januar 2009 - 21:48 #2
- og det omkring adresseringen gælder naturligvis også i dine to funktioner  =)
Avatar billede remedy Nybegynder
01. januar 2009 - 21:58 #3
Hvad mener du mht adressering? - Må indrømme jeg ikke ligefrem er en haj til det her :)
Avatar billede olebole Juniormester
01. januar 2009 - 22:03 #4
Du skal bruge document.getElementById
Avatar billede olebole Juniormester
01. januar 2009 - 22:03 #5
- og selvfølgelig bruge id på billederne i stedet for name
Avatar billede remedy Nybegynder
01. januar 2009 - 22:04 #6
Ville det være:

document.getElementById('Homeon')=homeon.src

?
Avatar billede roenving Novice
01. januar 2009 - 22:14 #7
-- og det kan tilføjes, at hele konstruktionen er en midt-90'er-ting, fra den gang javascript overhovedet kom på banen ...

-- en nutidig tilgang (med vores nutidige forbindelser !-) ville nok være noget i stil med:

<a href="?page=home" onmouseover="mO(this,true);" onmouseout="mO(this,false);">
<img src="gfx/menu/homeoff.jpg" name="Home" width="60" height="28" border="0" /></a>

<script type="text/javascript">
function mO(elm,act){
  var pic = elm.getElementsByTagName("img")[0];
  pic.src = act ? pic.src.replace(/off\./,"on.") : pic.src.replace(/on\./,"off.");
}
</script>
Avatar billede olebole Juniormester
01. januar 2009 - 22:14 #8
Nej:
    document.getElementById('Homeon').setAttribute('src',homeon.src)
Avatar billede olebole Juniormester
01. januar 2009 - 22:15 #9
Min kommentar var til remedy - men roenving har i øvrigt helt ret  ;o)
Avatar billede roenving Novice
01. januar 2009 - 22:17 #10
-- og jeg glemte at bruge getAttribute og setAttribute:

<script type="text/javascript">
function mO(elm,act){
  var pic = elm.getElementsByTagName("img")[0];
  pic.setAttribute("src", act ? pic.getAttribute("src").replace(/off\./,"on.") : pic.getAttribute("src").replace(/on\./,"off."));
}
</script>
Avatar billede remedy Nybegynder
01. januar 2009 - 22:27 #11
Okay.. hvis jeg ikke var forvirret, så er jeg i hvertfald nu :)

Prøver at se om jeg kan finde en sammenhæng :)
Avatar billede roenving Novice
01. januar 2009 - 22:31 #12
Hele den viste blok kan reduceres til:

<script type="text/javascript">
function mO(elm,act){
  var pic = elm.getElementsByTagName("img")[0];
  pic.setAttribute("src", act ? pic.getAttribute("src").replace(/off\./,"on.") : pic.getAttribute("src").replace(/on\./,"off."));
}
</script>


Hvor menuen er placeret, er der brugt:

<a href="?page=home" onmouseover="mO(this,true);" onmouseout="mO(this,false);">
<img src="gfx/menu/homeoff.jpg" name="Home" width="60" height="28" border="0" /></a>

<a href="?page=about" onmouseover="mO(this,true);" onmouseout="mO(this,false);">
<img src="gfx/menu/aboutoff.jpg" name="About" width="70" height="28" border="0" /></a>

<a href="?page=event" onmouseover="mO(this,true);" onmouseout="mO(this,false);">
<img src="gfx/menu/eventoff.jpg" name="Event" width="63" height="28" border="0" /></a>

<a href="?page=affiliates" onmouseover="mO(this,true);" onmouseout="mO(this,false);">
<img src="gfx/menu/affiliatesoff.jpg" name="Affiliates" width="108" height="28" border="0" /></a>

<a href="?page=press" onmouseover="mO(this,true);" onmouseout="mO(this,false);">
<img src="gfx/menu/pressoff.jpg" name="Press" width="65" height="28" border="0" /></a>

!-)
<a href="?page=contact" onMouseOver="document.Contacton.src=contacton.src;" onMouseOut="document.Contactoff.src=contactoff.src;">
<img src="gfx/menu/contactoff.jpg" name="Contact" width="124" height="28" border="0" /></a>
Avatar billede roenving Novice
01. januar 2009 - 22:32 #13
Ups, den sidste blev misset:

<a href="?page=contact" onmouseover="mO(this,true);" onmouseout="mO(this,false);">
<img src="gfx/menu/contactoff.jpg" name="Contact" width="124" height="28" border="0" /></a>
Avatar billede remedy Nybegynder
01. januar 2009 - 22:32 #14
Roenving:

www.5frames.dk/diverse/carrotmob/TEST2.php

Var det sådan dit forslag skulle bygges op, hvis det var??? - For umiddelbart virker det i hvertfald heller ikke :)
Avatar billede remedy Nybegynder
01. januar 2009 - 22:34 #15
Roeanving:

Mangler der ikke et sted, hvor man specificere hvilken .jpg der skal erstattets med eller er det bare mig? :)
Avatar billede remedy Nybegynder
01. januar 2009 - 22:35 #16
Ahhh!!

Har gennemskuet det :)
Avatar billede roenving Novice
01. januar 2009 - 22:36 #17
Nej, funktionenj skal skrives præcis som den er, altså at du skal hente det først img-element:

var pic = elm.getElementsByTagName("img")[0];
Avatar billede remedy Nybegynder
01. januar 2009 - 22:38 #18
Du er min redningsmand... HAr revet grå hår ud i et par timer nu :P

Plus; det stykke script var da nok en milliard gange mere simpel end hvad jeg har lært ;)
Avatar billede remedy Nybegynder
01. januar 2009 - 22:51 #19
Lig et svar, så du kan få point for det :)
Avatar billede roenving Novice
01. januar 2009 - 22:51 #20
Jepz, det kan jeg forestille mig (måske nærmere tusinder end mylliarder !-)

-- forklaringen er faktisk en hel del længere end scriptet, but here we go:

Ved at medsende referencen til a-tagget med 'this' ved vi, hvor vi er henne (og det er så ganske simpelt at finde img-tagget inde i linket !-)

-- med .getElementsByTagName("img")[0] har vi præcist fat i det aktuelle img-element, som vi derfor kan manipulere, som vi ønsker ...

-- 'act'-parameteren bruges så til at sætte ind og ud, og der bruges så den ternære operator, til enten at udskifte 'off' med 'on' eller omvendt (lidt sikkerhed ved at checke for punktummet også !-)

Den Ternære Operator:

var = betingelse ? 'Værdi hvis sand' : 'Værdi ellers (hvis falsk e.l.)';

-- og hvor har du lært det, desværre er indernettet ikke det mest grundigt dokumenterede sted, der findes i denne verden !o]

-- els velbekomme '-)
Avatar billede roenving Novice
01. januar 2009 - 22:58 #21
-- og jeg takker 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