Avatar billede peter_jensen Nybegynder
19. januar 2005 - 15:18 Der er 9 kommentarer og
1 løsning

OnMouseOver med reference til anden celle

Jeg har en tabel der skal fungere som en menu. Tabellen har 7 kolonner...én for hvert menupunkt, samt 2 rækker. En række der indeholder selve links´ne, og en række ovenover som vha. baggrundsfarven skal indikere hvilket menupunkt brugeren kigger på netop nu.

Problemet består i at jeg ved OnMouseOver og ved klik på de enkelte celler i række 2, gerne vil skifte baggrundsfarven i cellen ovenover..altså række 1.

Hvis der findes en løsning der kan integreres i CSS vil det være super, ren HTML løsning er også fint, men helst kun javascript-løsninger hvis intet andet er muligt.
Avatar billede elskermad.dk Nybegynder
19. januar 2005 - 15:31 #1
en løsning som dog godt kunne optimeres ;)

<table width='100%' align='center' cellpadding='5' cellspacing='0'>
    <tr>
      <td id='1_1'>1</td>
      <td id='1_2'>2</td>
      <td id='1_3'>3</td>
      <td id='1_4'>4</td>
      <td id='1_5'>5</td>
      <td id='1_6'>6</td>
      <td id='1_7'>7</td>
    </tr>
    <tr>
      <td onMouseOver='document.getElementById("1_1").style.backgroundColor="#FFFF00"' onMouseOut='document.getElementById("1_1").style.backgroundColor="#FFFFFF"'>1</td>
      <td onMouseOver='document.getElementById("1_2").style.backgroundColor="#FFFF00"' onMouseOut='document.getElementById("1_2").style.backgroundColor="#FFFFFF"'>2</td>
      <td onMouseOver='document.getElementById("1_3").style.backgroundColor="#FFFF00"' onMouseOut='document.getElementById("1_3").style.backgroundColor="#FFFFFF"'>3</td>
      <td onMouseOver='document.getElementById("1_4").style.backgroundColor="#FFFF00"' onMouseOut='document.getElementById("1_4").style.backgroundColor="#FFFFFF"'>4</td>
      <td onMouseOver='document.getElementById("1_5").style.backgroundColor="#FFFF00"' onMouseOut='document.getElementById("1_5").style.backgroundColor="#FFFFFF"'>5</td>
      <td onMouseOver='document.getElementById("1_6").style.backgroundColor="#FFFF00"' onMouseOut='document.getElementById("1_6").style.backgroundColor="#FFFFFF"'>6</td>
      <td onMouseOver='document.getElementById("1_7").style.backgroundColor="#FFFF00"' onMouseOut='document.getElementById("1_7").style.backgroundColor="#FFFFFF"'>7</td>
    </tr>
</table>
Avatar billede roenving Novice
19. januar 2005 - 15:49 #2
>>elskermad

-- du skal lige være opmærksom på, at det ifølge html-standarden ikke er tilladt at bruge et tal som første tegn i en id-attribut (men det virker vist stadig i IE !-)

Men hvad med at bruge en anden indgangsvinkel, hvor man med nogle divs i cellerne styrer de to ting, og så nøjes med een række ?-)

<table>
  <tr>
    <td onmouseover="this.getElementsByTagName('DIV')[0].style.backgroundColor='red'" onmouseout="this.getElementsByTagName('DIV')[0].style.backgroundColor='green'">
      <div style="background:green;height:20px;"></div>
      <a href="noget">Noget</a></td>
  </tr>
</table>
Avatar billede peter_jensen Nybegynder
19. januar 2005 - 16:13 #3
Tak for de hurtige svar begge to. Umiddelbart virker jeres svar jo begge præcis efter hensigten, så det er helt i top =:o)

Men kan det lade sig gøre at flette ind, at hvis brugeren klikker på linket, så fastholdes farven i øverste celle, samtidigt med at OnMouseOver-effekten fortsat virker på de øvrige celler?
Avatar billede roenving Novice
19. januar 2005 - 16:24 #4
Så skal du onload undersøge om linket til den nuværende side er til en af linkene, og så ændre grundfarven over linket, samt finde på noget med mouseout, som må basere sig på en js-variabel !-)
Avatar billede elskermad.dk Nybegynder
19. januar 2005 - 18:09 #5
hehe så er det fordi du har glemt at fortælle mig det roenving! ;) vil mene at du stortset har lært mig 70% af alt det javascript jeg kan! - siger jeg tak for... - endnu en ting jeg har lært i dag! (de sidste 30% har jeg vist lært af olebole!)

eftersom jeg bruger IE ser jeg ikke sådanne fejl og bliver ikke opmærksomme på at det er en fejl...
Avatar billede roenving Novice
19. januar 2005 - 23:02 #6
Så kan jeg da kun anbefale dig at hente den nyeste FireFox til at kontrollere med (hvilket jeg også selv bruger !-)

www.mozilla.org ...
Avatar billede peter_jensen Nybegynder
27. januar 2005 - 13:05 #7
tak for hjælpen =:o)
Avatar billede peter_jensen Nybegynder
27. januar 2005 - 13:09 #8
>>roenving

Læg et svar, så accepterer jeg også det...
Avatar billede roenving Novice
27. januar 2005 - 13:12 #9
-- men det kan du ikke, når du har lukket et spørgsmål !-)
Avatar billede peter_jensen Nybegynder
27. januar 2005 - 13:17 #10
Damn...så jeg kan altså ikke acceptere svar før alle har afgivet et svar. Sorry...det anede jeg ikke. Sker sjældent at jeg opretter spørgsmål, så var ikke helt dus med reglerne omkring acceptering af svar. Jeg skylder dig en tjeneste så, roenving.
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