Class ansprechen...
Newbie
- css
habe leider wieder ein "kleines" Problem, welches beim Schreiben der Navigation für meine neue Homepage entstand. In meinem Menü möchte ich gerne ein "Untermenü" integrieren, welches sich öffnet, sobald man den Obermenüpunkt mit der Maus überfährt. Eigentlich ja doch eine ziemlich simple Aufgabe, doch leider bin ich gerade hierbei auf ein ziemlich großes Problem gestoßen! Jedem Untermenüpunkt habe ich die Klasse "untermenue" zugeordnet und mit Hilfe von onmouseover (über den Obermenüpunkt) sollen sich jetzt drei Untermenüpunkte öffnen...doch wie spreche ich denn jetzt eigentlich die Klasse "untermenue" an?
Mir ist leider nur document.getElementById bekannt, doch ich habe hier eine Klasse...?!
Hoffe ihr könnt mir hier weiterhelfen :)
Mit freundlichen Grüßen,
Newbie
Hi,
es gibt document.getElementsByClassName.
Warum machst du die Navigation nicht <http://de.selfhtml.org/css/layouts/navigationsleisten.htm#modern@title=direkt mit CSS>?
~dave
hallo dave,
Hi,
es gibt document.getElementsByClassName.
ist aber kein Standard, es gibt nichtmal ne gescheite Doku darüber, wenn ich die ersten Suchmaschinentrefferseiten durchblättere.
in JQuery gäbe es aber die Möglichkeit, über Klassen auf Elemente zuzugreifen.
grüße,
henman
hallo Struppi,
Doch es ist Standard (in HTML5) und der erste Treffer ist nicht gescheit?
Touché, auch wenn es bei mir nicht der erste Treffer ist.
Ich war wohl etwas sehfaul.
grüße,
henman
Hi,
es gibt document.getElementsByClassName.
Warum machst du die Navigation nicht <http://de.selfhtml.org/css/layouts/navigationsleisten.htm#modern@title=direkt mit CSS>?
~dave
Ich mache das nicht direkt mit CSS, weil ich eine Zeitverzögerung beim Schließen des Untermenüs haben möchte ;)
Das "document.getElementsByClassName" funktioniert leider nicht, oder mache ich da nur was falsch:
<a href="#" onmouseover="document.getElementsByClassName('untermenue').style.display='block';">
``
Mfg,
Newbie
Hi,
Das "document.getElementsByClassName" funktioniert leider nicht, oder mache ich da nur was falsch:
<a href="#" onmouseover="document.getElementsByClassName('untermenue').style.display='block';">
``
Wie das 's' bei Elements schon andeutet, liefert dir diese Methode nicht ein Element zurück, sondern eine Liste von mehreren - und die musst du dann auch alle einzeln ansprechen. (Siehe getElementsByTagName für ein Beispiel, wie die Syntax zum Zugriff aussieht. Bei mehreren Elementen wirst du dann eher eine Schleife nehmen wollen, und das ganze der Übersichtlichkeit und Wartbarkeit halber auch in eine Funktion auslagern.)
MfG ChrisB
Wie das 's' bei Elements schon andeutet, liefert dir diese Methode nicht ein Element zurück, sondern eine Liste von mehreren - und die musst du dann auch alle einzeln ansprechen. (Siehe getElementsByTagName für ein Beispiel, wie die Syntax zum Zugriff aussieht. Bei mehreren Elementen wirst du dann eher eine Schleife nehmen wollen, und das ganze der Übersichtlichkeit und Wartbarkeit halber auch in eine Funktion auslagern.)
MfG ChrisB
Aber ich habe doch eine Klasse, die aus mehreren Elementen besteht und dein Link verweist nur auf getElementsByTagName() .
Wie kann ich mein Problem mit Javascript jetzt lösen? Ich schaffe es leider nicht auf die Klassen zuzugreifen :/
Hi,
Aber ich habe doch eine Klasse, die aus mehreren Elementen besteht und dein Link verweist nur auf getElementsByTagName() .
Ach, Überraschung - der Link verweist auf genau das, was ich schrieb.
Außerdem schrieb ich, dass du dir dort das *Prinzip* abschauen kannst.
Wie kann ich mein Problem mit Javascript jetzt lösen?
In dem du dich zunächst mal etwas intensiver mit den Grundlagen von JavaScript und DOM beschäftigst.
MfG ChrisB
Ach, Überraschung - der Link verweist auf genau das, was ich schrieb.
Außerdem schrieb ich, dass du dir dort das *Prinzip* abschauen kannst.
Achso ich soll mir das Prinzip dort abschauen...würde das aber gerne ohne Arrays machen ;)
Hi,
Achso ich soll mir das Prinzip dort abschauen...würde das aber gerne ohne Arrays machen
getElementsByClassName liefert dir aber etwas, was sich wie ein Array ansprechen lässt.
Du musst natürlich nicht diese Methode nehmen, es gibt zahlreiche andere Möglichkeiten, um auf Elemente im DOM zuzugreifen.
Und wenn es dir lediglich um die Zeitverzögerung geht, dann musst du die Elemente auch nicht einzeln ansprechen, sondern kannst dir wieder die Selektoren von CSS zu nutze machen, bspw. den Nachfahrenselektor - den du sich einfach dadurch auswirken lässt, dass du bspw. die Klasse eines gemeinsamen Vorfahrenelementes änderst (per JavaScript).
MfG ChrisB
Und wenn es dir lediglich um die Zeitverzögerung geht, dann musst du die Elemente auch nicht einzeln ansprechen, sondern kannst dir wieder die Selektoren von CSS zu nutze machen, bspw. den Nachfahrenselektor - den du sich einfach dadurch auswirken lässt, dass du bspw. die Klasse eines gemeinsamen Vorfahrenelementes änderst (per JavaScript).
Kannst du mir vllt. einen Beispielcode geben, wo ich das sehe, weil ich das jetzt irgendwie mit den Nachfahrenselektor usw. nicht mehr kapier :(
mfg,
Newbie
Hi,
Jedem Untermenüpunkt habe ich die Klasse "untermenue" zugeordnet
warum? Wenn alle gleich sind, muss man das Gleichheitsmerkmal nicht noch bei jedem einzelnen hervorheben.
doch wie spreche ich denn jetzt eigentlich die Klasse "untermenue" an?
Mit ".untermenue". Die Elemente, die diese Klasse bis eben besaßen und jetzt nicht mehr besitzen, sprichst Du mit "li" an.
Mir ist leider nur document.getElementById bekannt,
Das wäre JavaScript, trifft also nicht den von Dir gewählten Themenbereich, und es ist auch völlig überflüssig. Bleibe bei CSS.
Cheatah
Das wäre JavaScript, trifft also nicht den von Dir gewählten Themenbereich, und es ist auch völlig überflüssig. Bleibe bei CSS.
Sry, wollte eigentlich Javascript als Themenbereich wählen. Ich möchte das Menü schon teils mit Javascript machen, weil ich beim Schließen des Menüs eine Zeitverzögerung haben möchte und das, soweit ich weiß, nicht mit reinem CSS geht! ;)
mfg,
Newbie