Avatar billede yoka Nybegynder
05. december 2009 - 21:27 Der er 10 kommentarer og
1 løsning

Ændre visibility på node sibling

Hej!

Jeg har to billeder inde i en div. De må derfor være "node" siblings, ikke?

Det ene billede har "visibility:hidden;", dette skulle gerne ændres når der trykkes på det andet billede.

Dette fungerer ikke til at gøre søskende siblingen visible:

onclick="nextSibling.style.display = 'visible'"

ja, søster div'en skal bare blive visible når der klikkes på den anden node i diven...

På forhånd tak!
Avatar billede mbm2016 Nybegynder
05. december 2009 - 21:51 #1
Skal det ikke hedde:
onclick="nextSibling.style.visibility = 'visible'"
Avatar billede yoka Nybegynder
05. december 2009 - 21:56 #2
Jo det har du ret i. Jeg havde lige brugt "display: none/block" i stedet.. men:

onclick="nextSibling.style.visibility = 'visible'"

virker heller ikke. Jeg ved ikke om man overhovedet kan navigere i nodetræet på den måde...
Avatar billede yoka Nybegynder
05. december 2009 - 21:58 #3
jeg får foresten denne fejl i JS debuggeren:

TypeError: Result of expression 'nextSibling.style' [undefined] is not an object.

hm?
Avatar billede mbm2016 Nybegynder
05. december 2009 - 22:02 #4
Kan vi se hele din kode?

Altså hvor du får din NextSibling fra?
Avatar billede yoka Nybegynder
05. december 2009 - 22:11 #5
yes...

en div indholdende to elementer, et billede og en "embed". Disse må altså være to siblings ikke. Når jeg trykker på billedet skal playeren "embed" elementet blive visible. Er Embed ikke NextSibling i forhold til img tagget?

<div class="playWrapper">
<img src="graphics/speaker.png" onclick="nextSibling.style.display = 'visible'">

<embed
                      src="graphics/player.swf"
                      width="200"
                      height="20"
                      allowscriptaccess="always"
                      allowfullscreen="false"
                      flashvars="file=graphics/test.mp3&autostart=false&duration=30&backcolor=1080ff&frontcolor=ffffff"
/>
</div>
</div>
Avatar billede mclemens Nybegynder
05. december 2009 - 23:31 #6
nej, det er object text
- prøv at sige alert(nextSibling);
husk at rette visibility til block eller inline
Avatar billede tjens Nybegynder
06. december 2009 - 12:31 #7
Det skal være en DOMnode.nextSibling

Prøv med [code]      this.[/code] som DOMnode:

onclick="this.nextSibling.....
Avatar billede yoka Nybegynder
06. december 2009 - 13:05 #8
hmm. Det virker heller ikke...

jeg har prøvet med lidt forskelligt fra
http://www.howtocreate.co.uk/tutorials/javascript/domstructure
uden en løsning
Avatar billede mclemens Nybegynder
06. december 2009 - 13:25 #9
Der er ingen grund til at bruge this ?
- Overså i mit indlæg ?

- Ryk elementerne sammen så der ikke er en text node imellem dem og benyt enten display samt none, block, inline eller visibility samt hidden, visible.

Test eksempel:

<div class="playWrapper">
<img src="graphics/speaker.png" onclick="nextSibling.style.display = 'block'" alt="klik mig"><embed
                      src="a.jpg"
                      width="200"
                      height="20"
                      allowscriptaccess="always"
                      allowfullscreen="false"
                      flashvars="file=graphics/test.mp3&autostart=false&duration=30&backcolor=1080ff&frontcolor=ffffff"
style="display:none;" />
</div>
Avatar billede yoka Nybegynder
06. december 2009 - 13:38 #10
Tak for det! Jeg havde prøvet det men havde glemt at fjerne mellemrum og derved text-node. Nu virker det!
Avatar billede mclemens Nybegynder
06. december 2009 - 15:20 #11
Oki doki :)
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