Suche im Forum:
Suchen


« Vorheriges Thema anzeigen :: Nächstes Thema anzeigen »  
Autor Nachricht
Beitrag08.07.2012 um 15:00 (UTC)    
Titel: JavaScript: this.firstChild funktioniert nicht

Hallo,

ich bin grade dabei, mir eine Bildergalerie zu basteln.
Dazu gehören auch Navigationslinks, die beim Überfahren mit der Maus eingeblendet werden sollen und auf dem Bild positioniert sind.
Die Links haben eigene Containerelemente.

Da meine Versuche, über CSS (:hover) den Inhalt der beiden Link-Container einzublenden, am IE gescheitert sind, habe ich es stattdessen mit JavaScript versucht, was in etwa so aussieht:
Zitat:
this.firstChild.style.visibility = 'visible bzw. hidden';

Das funktioniert allerdings im IE immer noch nicht und im Firefox nur einseitig.
Und die Fehlerkonsole schmeißt umso mehr "... is not defined"-Fehler, wenn es funktioniert.

Link zur Seite:
http://transint.de.tl/Gaallerietest.htm

Ich habe den Funktionscode auch schon direkt über onmouseover und -out ausgeführt und es mit getElementById probiert - Alles ohne Erfolg.

Ich hoffe dass mir da jemand weiterhelfen kann Confused

Gruß,

TransInt
______________
Kein Support per PN - Im Forum hilft es allen!

Life is what happens while you are busy making other plans.
- John Lennon
Beitrag08.07.2012 um 16:14 (UTC)    
Titel:

Hallo,

wenn du den Event per Attribut im Tag zuweist, fehlt die Referenz auf das auslösende Objekt. Wenn du versuchst per this pointer auf das Objekt zuzugreifen, greifst du nicht auf das auslösende Objekt zu, sondern auf das window Objekt, welches als letztes Glied in der Kette den Event fängt, und window.firstChild ist nicht definiert.

Das es mit next funktioniert, ist eine kleine Täuschung. Du hast vergessen das CSS zu löschen:
Zitat:
#contn:hover span { visibility:visible; }


Um auf das Objekt zuzugreifen, musst du entweder das Objekt explizit übergeben:
Zitat:
<div id="contp" onmouseover="displink(this);" onmouseout="hidelink();"><span id="prev" onclick="prev();">Zur-ck</span>

Die Funktion braucht dann allerdings auch einen Parameter, über welchen du dann auf firstChild Zugriff bekommst.

Oder du weist dem Objekt den Eventhandler zu. Dafür holst du dir dynamisch das Objekt und setzt für onmouse.... die Referenz auf die Funktion:
Zitat:
document.getElementById('contp').onmouseover = displink;

Hier kannst du jetzt per this pointer auf das Objekt zugreifen.
______________
mfg
o-4-n

"If you’re incompetent, you can’t know you’re incompetent." - [David Dunning]

*** Die Suchfunktion ist KEINE tödliche Krankheit! ***

Eventplanung, Equipment, Zeltverleih, Catering
Beitrag08.07.2012 um 17:19 (UTC)    
Titel:

Vielen Dank für deine Hilfe Smile

Das Script sieht jetzt folgendermaßen aus:
Zitat:
function displink(abcd) {
abcd.firstChild.style.visibility = 'visible'; }
function hidelink(abcd) {
abcd.firstChild.style.visibility = 'hidden'; }

Beim Funktionsaufruf wird das aktuelle Objekt übergeben.

Im Firefox funktioniert das auch wunderbar, im IE wird die entsprechende Funktion überhaupt nicht aufgerufen.

Edit: Hab's hinbekommen. Wer kann auch ahnen, dass der IE die onmouse...-Events auf den Inhalt bezieht Rolling Eyes
______________
Kein Support per PN - Im Forum hilft es allen!

Life is what happens while you are busy making other plans.
- John Lennon


Zuletzt bearbeitet von transint am 08.07.2012, 20:11, insgesamt 3-mal bearbeitet
Beiträge der letzten Zeit anzeigen:   


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de