Avatar billede webweaver Praktikant
14. juni 2011 - 16:52 Der er 8 kommentarer og
2 løsninger

Ændre style ved mouseOver på andet element

Hej folkens

Jeg sidder og roder rundt i noget JavaScript, som irriterende nok ikke er min stærke side. Jeg kombinerer det med noget PHP, men kan sgu ikke få det til at funke.

I bund og grund skal jeg kunne skifte style (z-index) på en div, når jeg har mouseOver eller mouseOut på nogle andre elementer. Disse elementer stammer fra PHP og er dynamiske.

Det hele ligger i en while løkke i PHP (stort set samme princip som i JavaScript) og dermed skal der noget id ind over, for at vide, hvilken mouseover/mouseout, der hører til hvilket element.

Jeg har tænkt mig frem til en løsning og forsøgt at kode den, men det virker ikke, da der er nogle ting jeg ikke helt har styr på i JavaScript.

Jeg er kommet frem til følgende:

Der kører en løkke i PHP, derfor ønsker jeg at lave det som en funktion, da det er fjollet at køre hele scriptet hver gang løkken repeater.

<head>

<script language="JavaScript">     

function mouseOverThumb(e) {

var corr "test" + e;

document.getElementById('corr').this.style.zIndex='-1';

}

function mouseOutThumb(e) {

var corr "test" + e;

document.getElementById('corr').this.style.zIndex='-2';

}

</script>
       
</head>


Nede i body laver jeg en "funktion" der tæller sig selv op, så hver element dermed får 1, 2, 3 og så videre, så de kan fanges enkeltvis ...

<script language="JavaScript">
       
var count = 0;
                                   
</script>

PHP LØKKE STARTER HER

...

<script language="JavaScript">
                       
var count = count + 1;
                           
var reg = "test" + count;
                               
</script>

<?php

echo "<img class=\"portfolio_no_link\" src=\"../cms/modules/references/references/" . $thumb . "\" width=\"150\" height=\"150\" alt=\"" . $company . "\" onmouseover=\"mouseOverThumb(count)\" onmouseover=\"mouseOutThumb(count)\">";

?>

<div class="fadePic" id="document.write(reg)">

<img style="width: 323px; height: 333px; border: 1px solid #9b3838" src="../cms/modules/references/references/<?php echo $thumb; ?>" alt="<?php echo $company; ?>">

</div>

PHP LØKKE SLUTTER ...


Umiddelbart efter min mening, burde det jo være tæt på at virke :D Tællefunktionen virker i hvert fald. Der jeg er temmelig sikker på, at jeg har en fejl til gengæld, er i følgende linie

<div class="fadePic" id="document.write(reg)">

Jeg skal have id til at indeholde værdien af variablen reg.
Det ser i hvert fald ikke ud til at virke, som jeg har det der?

Det samme gælder for onmouseover=\"mouseOverThumb(count)\", hvor den også skal sende værdien af variablen count op i funktionen i headeren. Det er jeg ikke sikker på at den gør.

Så jeg håber på, at I lige kan guide mig det sidste stykke.

På forhånd tak :-)

Mvh. Lasse Jensen
Avatar billede majbom Novice
14. juni 2011 - 18:29 #1
først:

<script language="JavaScript">


ændr til:

<script type="text/javascript">


og så skriver du ' rundt om din variabel corr i dit document.getElementById() - det skal du ikke, når noget omkranses af ' eller " er det en streng, lige som i php

så det skal altså være:

document.getElementById(corr).this.style.zIndex='-1';
Avatar billede webweaver Praktikant
14. juni 2011 - 19:15 #2
Tak for det splazz.

Det er godt, at du er vågen, når jeg nu ikke er det.
Begge 2, svipsere fra min side af.

Ved ikke rigtig, hvor jeg har fået fat i

<script language="JavaScript">

fra, da jeg bruger den anden alle andre steder. Det må have været da jeg kiggede i mine gamle filer for inspiration, at den er blevet kopieret over.

Så validerer det da igen i hvert fald, når det kommer til det på et tidspunkt :)

Og den anden med variablerne, havde jeg slet ikke set. Var jeg jo udemærket godt klar over, da det er præcis det samme som PHP, som du også selv nævner ... Så det er fikset.

Desværre, så er der stadig problemer et eller flere andre steder, for det virker stadig ikke.

Har du nogen idé om syntaxen for denne er korrekt?
<div class="fadePic" id="document.write(reg)">


Det ser nemlig forkert ud i mine øjne, men kan ikke finde et konkret eksempel på inline JavaScript som jeg ønsker det. I hvert fald ikke, når det skal være på et anden element, end det som der er mouseover på (this).
Avatar billede majbom Novice
14. juni 2011 - 19:41 #3
jeg ville nok bruge

element.setAttribute('id', reg);
Avatar billede webweaver Praktikant
14. juni 2011 - 19:52 #4
Okay, det kigger jeg lige på og vender tilbage senere.

Tak.
Avatar billede webweaver Praktikant
15. juni 2011 - 12:20 #5
Jeg har fået det til at virke :-)

Det endte dog med at jeg lavede count-delen i PHP, da jeg havde brug for at fastholde værdierne, før der outputtes til browseren.

Tak for rettelsen af den anden fejl med variablen skrevet ind som en string. Det havde i hvert fald ikke virket, hvis dette ikke var blevet rettet.

Smid et svar :)
Avatar billede majbom Novice
15. juni 2011 - 12:25 #6
lad os dele :)
Avatar billede webweaver Praktikant
15. juni 2011 - 13:19 #7
Jamen hvis du insisterer :)
Avatar billede majbom Novice
15. juni 2011 - 13:58 #8
ffs!

jeg mente 50/50 :)

men tfp så!
Avatar billede webweaver Praktikant
15. juni 2011 - 15:01 #9
Tænkte jeg nok, men tænkte også, at jeg nok kunne undvære pointene :-) Der er nok herinde i forvejen, der har lidt for svært ved at dele point ud, når de bør.
Avatar billede majbom Novice
15. juni 2011 - 15:21 #10
det kan vi hurtigt blive enige om :)
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