Avatar billede passiflora Juniormester
20. januar 2008 - 01:09 Der er 34 kommentarer og
1 løsning

Onmouser over virker ikke i firefox

Hejsa

Jeg har et js der viser stort billed ved mouse over, det virker fint i ie 6 og 7, men slet ikke i firefox.

Nogen der kan hjælpe med den lille "bug"

Her er min kode ...

<script type="text/javascript">
function handleOver(src){
document.getElementById("largeimg").firstChild.setAttribute("src",src);
document.getElementById("largeimg").style.display="inline";
}
function handleOut(){
document.getElementById("largeimg").style.display="none"
}
</script>


  <div id="frise1">
    <a title="test" onMouseOver="handleOver('billed/frise/<%=valgt%>.jpg')" onMouseOut="handleOut()">
    <img name="img" border="0" width="100px" src="billed/frise/small/<%=valgt%>.jpg"></a></div>
<div id="largeimg" align="center" style="display:none">
Avatar billede w13 Novice
20. januar 2008 - 01:15 #1
Det skyldes, at Firefox fortolker linjeskift som childNodes. Dvs. largeimg.firstChild bliver linjeskiftet lige efter div'en "largeimg", så du skal bare skrive det på én linje. Er du i tvivl, så post lidt mere af din kode. Du har skåret den, lige på det sted, hvor problemet ligger. I øvrigt bør det ikke være "onMouseOver", men "onmouseover".
Avatar billede erikjacobsen Ekspert
20. januar 2008 - 01:17 #2
Ganske rigtigt, men den nemmeste løsning vil nok være at give dit <img>-tag en ID selv.
Avatar billede softspot Forsker
20. januar 2008 - 01:18 #3
Alternativt smide et id på elementet til det store billede, så du kan hente det direkte med getElementById. Så er du uafhængig af hvordan billedet ligger i dokumentstrukturen...
Avatar billede softspot Forsker
20. januar 2008 - 01:18 #4
Nå, for der var jeg for langsom :)
Avatar billede olebole Juniormester
20. januar 2008 - 01:32 #5
<ole>

Man kunne også:

<script type="text/javascript">
function handleOver(oImg) {
    document.getElementById("largeimg").setAttribute("src", oImg.getAttribute("src").replace("small/", ""));
    document.getElementById("largeimg").parentNode.style.display="inline";
}
function handleOut(oImg) {
    document.getElementById("largeimg").parentNode.style.display="none"
}
</script>

<div id="frise1">
    <img title="test" style="width:100px;cursor:pointer"
        onMouseOver="handleOver(this)"
        onMouseOut="handleOut(this)"
        src="billed/frise/small/<%=valgt%>.jpg"></div>

<span align="center" style="display:none"><img id="largeimg" src=""></span>

/mvh
</bole>
Avatar billede passiflora Juniormester
20. januar 2008 - 11:11 #6
Tak for svar og tanker.

Fjernelse af linieskift løste det.

Div tag'et i stedet for img id'et noget med at jeg ønsker en bestemt placering af mit store billede (Har næsten ingen viden om JS)

Søren
Avatar billede w13 Novice
20. januar 2008 - 11:14 #7
Tak for point!
Avatar billede softspot Forsker
20. januar 2008 - 11:24 #8
Interessant argument for at vælge en mindre fleksible løsning ;-)
Avatar billede passiflora Juniormester
20. januar 2008 - 13:01 #9
W13 velbekom ...

Softspot ... vil du evt uddybe dit synspunkt ... og brugbart kunne evt give nogle point ...
Avatar billede w13 Novice
20. januar 2008 - 13:20 #10
Softspot mener, at dit billede skal ligge præcis som det gør nu, for at koden virker. Hvis billedet flyttes, skal koden rettes til.

Nu rettede jeg jo bare din kode, så den kom til at virke, så jeg gik ud fra den opbygning, som din kode havde. _Hvis_ du vil være sikker på, at det ikke gør noget, hvis du placerer billedet på en anden måde, kan du sætte et id på, som Softspot foreslår. Så behøver du ikke bruge firstChild, men kan i stedet benytte document.getElementById('billedets-id')... som jo unægteligt bliver lidt mere dynamisk.
Avatar billede passiflora Juniormester
20. januar 2008 - 13:31 #11
Hvis jeg bruger id på img, så skal jeg vel alligevel have et div tag for absolut placering ... eller ...

Hvad mener du med at placerer billedet på en anden måde ...
Avatar billede w13 Novice
20. januar 2008 - 13:38 #12
Hvis du sætter andre elementer ind foran det eller lign.
Og du kan nok undgå div-tag'et i øvrigt, du kan jo bare sætte style direkte på billedet.
Avatar billede erikjacobsen Ekspert
20. januar 2008 - 13:44 #13
Det er vel ikke helt vildt at have et ID på din <div> som du så kan tænde og slukke for, og et ID på dit <img> så du kan skifte billede. Det var egentlig blot hvad jeg lagde op til. Så er der selvfølgelig de7.324 andre måder at gøre det på.
Avatar billede passiflora Juniormester
20. januar 2008 - 13:47 #14
Styler jeg direkte på billedet vil jeg jo skulle rette det på alle sider ...

Jeg kan sagtens sætte andre tags ind i mellem ...
Avatar billede w13 Novice
20. januar 2008 - 13:54 #15
Nu er jeg ikke med. Skal du så ikke også rette det, hvis du styler på div'et?

Og hvor mange sider har du, der har den samme kode? ^o)
Avatar billede passiflora Juniormester
20. januar 2008 - 14:03 #16
Erik bestemt ikke vildt, divet syns jeg er smart, lige nu kan jeg ikke rigtig se hvad jeg skulle bruge id'et på img'en til ... måske lyset går op for mig en dag ... siden her skifter faktisk billede hver gang den bliver loaded.

Og ja, tonsvis af muligheder, og det noget af det fede ved at lege med det ... Skulle I have lyst til at se siden, så hedder den sb-online.dk ... ikke at jeg er færdig ... men på vej ...
Avatar billede olebole Juniormester
20. januar 2008 - 14:08 #17
Jeg viste ellers, hvad du kan bruge et ID på billedet til i (20/01-2008 01:32:42)  :)
Avatar billede passiflora Juniormester
20. januar 2008 - 14:08 #18
W13, stylinget af mit div ligger i min css side.

Det en fast del af mit site ... med 3 billeder lodret i højre side ...

Søren
Avatar billede erikjacobsen Ekspert
20. januar 2008 - 14:09 #19
Det er så nemt, så man tror det er løgn (om det er nemmere end Oles kommer han og mig nok til at diskutere ... *haha*):

<script type="text/javascript">
function handleOver(src){
document.getElementById("largeimgxxx").setAttribute("src",src);
document.getElementById("largeimg").style.display="inline";
}
function handleOut(){
document.getElementById("largeimg").style.display="none"
}
</script>


  <div id="frise1">
    <a title="test" onMouseOver="handleOver('billed/frise/<%=valgt%>.jpg')" onMouseOut="handleOut()">
    <img name="img" border="0" width="100px" src="billed/frise/small/<%=valgt%>.jpg"></a></div>
<div id="largeimg" align="center" style="display:none">
<img id="largeimgxxx">
....osv....
Avatar billede w13 Novice
20. januar 2008 - 14:13 #20
passiflora> Så du har designet liggende på hver sides? Jeg kan med fordel anbefale, at du kigger på nogle muligheder for inkludering af design. Det er tre-kvart-million gange lettere. =)
Avatar billede passiflora Juniormester
20. januar 2008 - 14:17 #21
w13 ... Tænker du her på et include ... eller ...
Avatar billede w13 Novice
20. januar 2008 - 14:20 #22
Ja, f.eks. Jeg fik den forståelse, at du manuelt satte designet ind på samtlige sider, men jeg tager muligvis fejl. =)
Avatar billede passiflora Juniormester
20. januar 2008 - 14:22 #23
Jeg burde bruge include, men selve designet styres af css'en ... i det omfang jeg kan finde ud af det ...
Avatar billede w13 Novice
20. januar 2008 - 14:33 #24
Med include bli'r det stadig styret af css (når det er det, du har valgt at bruge), det der bliver inkluderet er alle de html-koder, der går igen på alle siderne, dvs. html'en som udgør designet.
Avatar billede w13 Novice
20. januar 2008 - 14:38 #25
F.eks. kan du gøre sådan her:

header.asp:
---------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <title>Sidens navn</title>
</head>
<body>
<h1>Sidens navn</h1>
---------------------------------

footer.asp:
---------------------------------
<p>Copyright (C) 2008</p>
</body>
</html>
---------------------------------

index.asp:
---------------------------------
<!--#include virtual="header.asp"-->

Indhold

<!--#include virtual="footer.asp"-->
---------------------------------

Så vil header indsættes før og footer indsættes efter indholdet, så resultatet bliver:
---------------------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <title>Sidens navn</title>
</head>
<body>
<h1>Sidens navn</h1>

Indhold

<p>Copyright (C) 2008</p>
</body>
</html>
Avatar billede passiflora Juniormester
20. januar 2008 - 14:46 #26
W13 - har brugt include til menu, men da aldrig overvejet top og bund ... det da smart ... og så include min frise
Avatar billede olebole Juniormester
20. januar 2008 - 14:54 #27
Erik >> Det behøver vi ikke at diskutere - for mit eksempel er naturligvis bedst!  ;D

Jeg vil gerne have så lidt kode i min markup, som muligt. Det er ofte en fordel i forhold til søgemaskiner - JavaScriptet lægges i en ekstern fil, så man ikke behøver trætte Google med den slags.

Samtidig er min version en smule lettere at vedligeholde. Hvis jeg f.eks. ønsker at ændre min 'small' mappes navn til 'thumbs', skal jeg i din version ind og ændre to steder på hver HTML-side. I min version skal jeg blot ind og rette ét sted og derudover rette linjen i JS-filen:
    document.getElementById("largeimg").setAttribute("src", oImg.getAttribute("src").replace("small/", ""));

- til:
    document.getElementById("largeimg").setAttribute("src", oImg.getAttribute("src").replace("thumbs/", ""));

Men skal vi være helt ærlige ... "Pølse for og pølse bag - pølsen bevarer dog sin smag"  ;o)
Avatar billede passiflora Juniormester
20. januar 2008 - 15:04 #28
Ole ... vil det sige at I også lave include på js? Har det der include slet ingen hage .. :)

Jo færre steder der skal rettes til destro bedre, det minimerer jo meget mængden af fejl

Forstod jeg blot en smule mere js ...
Avatar billede olebole Juniormester
20. januar 2008 - 15:10 #29
I ægte XHTML (som ingen browser endnu understøtter) er der slet ikke mulighed for at skrive styles eller scripts direkte i dokumentet - de skal ligge i eksterne filer.

Derudover er der også i HTML kun fordele ved at inkludere den slags kode fra eksterne filer. Dels skal du kun opdatere ét sted - og dels cache's filerne på brugerens PC, så de kun skal downloades én gang af browseren
Avatar billede olebole Juniormester
20. januar 2008 - 15:11 #30
- og det gøres i head-elementet med:
    <script type="text/JavaScript" src="min_fil.js"></script>
Avatar billede passiflora Juniormester
20. januar 2008 - 15:20 #31
... og head elementet ligge externt ... hmm ...

Det må jeg eksperimenterer med ... 1000 tak ...

Syns jeg skylder nogle point ...
Avatar billede olebole Juniormester
20. januar 2008 - 15:25 #32
Nej, head-elementet kan du ikke lægge eksternt  :)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>TITLE</title>
    <link href="mine_style.css" rel="stylesheet" type="text/css">
    <script type="text/JavaScript" src="mine_scripts.js"></script>
</head>
<body>

Indhold ...

</body>
</html>

- og nej, du skylder ikke mig nogen points  :)
Avatar billede passiflora Juniormester
20. januar 2008 - 15:29 #33
Tak ihvertfald

Syn's at w13 lagde i seperat fil ...
Avatar billede w13 Novice
20. januar 2008 - 15:30 #34
Olebole>> Jeg tror, der menes, hvis designet inkluderes, så ligger header jo nok eksternt.
Avatar billede olebole Juniormester
20. januar 2008 - 15:35 #35
Sorry ... det var måske mig, der misforstod. 'Head' kan betyde flere ting ... hvilket jeg jo godt ved, når jeg bruger mit eget  ;D
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