Li element ansteuern wenn nur ID von UL bekannt ist
keinBlase
- javascript
Hallo
Ich habe folgende Ausgangslage:
<ul id="meineID1">
<li></li>
<li></li>
</ul>
<ul id="meineID2">
<li></li>
<li></li>
</ul>
Die Li Elemente sind per CSS ausgeblendet (natürlich die UL auch).
Nun möchte ich per JS diese Elemente einblenden. Dafür habe ich jedoch nur die ID der <ul>s zur Verfügung
enableLi('meineID1');
enableLi('meineID2');
Wie kann ich die LI Elemente ansteuern, wenn ich nur die ID des jeweiligen UL kenne?
Ich habe versucht, dies mittels Auslesen der UL und Li elemente zu machen:
function enableBox(meineId) {
var allElems = document.getElementsByTagName('ul');
for (var i = 0; i < allElems.length; i++) {
var thisElem = allElems[i];
if (thisElem.id && thisElem.id == meineId) {
// und nun die LIs?
}
}
}
Dies geht jedoch so nicht (da ich immernoch kein Zugriff auf die LI habe).
Am einfachsten würde es über CSS #meineID1 li{display:block;} gehen.
Doch meines Wissens kann ich per JS nur auf die ID, Class etc zugreifen, aber nicht auf Elemente mit ID einschränkungen.
Hat jemand eine Idee?
Thxn
Hi,
Wie kann ich die LI Elemente ansteuern, wenn ich nur die ID des jeweiligen UL kenne?
Wenn du getElementsByTagName bereits kennst, dann möchte ich gern wissen, was jetzt eigentlich dein Problem ist?
MfG ChrisB
Hallo
Ich habe mehere Listen auf meiner Seite. Somit da ich zudem keine class oder id bei den LIs habe, kann ich die LI Elemente zwar ansteuern, kriege aber immer alle.
Mein Problem ist also, dass ich nicht weiss, wie ich die LIs ansteuern kann, wenn ich nur die ID des übergeordneten UL kenne.
Mit getElementsByTagName kriege ich zwar die LIs , aber wie in meinem Beispiel kann ich meines Wissens nicht auf das überligenede Element zugreifen
Weisst du nun was ich meine? Wie würdest du die LIs ansteuern (ohne dabei alle LIs anzuzeigen)
Thxn
Ich habe mehere Listen auf meiner Seite. Somit da ich zudem keine class oder id bei den LIs habe, kann ich die LI Elemente zwar ansteuern, kriege aber immer alle.
Mit getElementsByTagName in einem Array, deren Keys der Reihenfolge im DOM entsprechen.
Mein Problem ist also, dass ich nicht weiss, wie ich die LIs ansteuern kann, wenn ich nur die ID des übergeordneten UL kenne.
So wie du auch deine UL-Elemente findest, nur einfacher (wurde ja schon gesagt).
Mit getElementsByTagName kriege ich zwar die LIs , aber wie in meinem Beispiel kann ich meines Wissens nicht auf das überligenede Element zugreifen
http://de.selfhtml.org/javascript/objekte/node.htm#parent_node@title=parentNode
Weisst du nun was ich meine? Wie würdest du die LIs ansteuern (ohne dabei alle LIs anzuzeigen)
Ich würde eine JavaScript-Selektor-Engine verwenden und mich derartigen Low-Level-DOM-Dingen nicht mehr beschäftigen - das ist sehr zeitraubend :)
Hi,
Mein Problem ist also, dass ich nicht weiss, wie ich die LIs ansteuern kann, wenn ich nur die ID des übergeordneten UL kenne.
In dem du per ID auf die Liste zugreifst, und dann *deren* Methode aufrufst, die dafür zuständig ist, dir alle Nachfahrenelemente dieser Liste mit einem bestimmten Tagnamen zu liefern.
MfG ChrisB
Hi,
<ul id="meineID1">
<li></li>
<li></li>
</ul><ul id="meineID2">
<li></li>
<li></li>
</ul>
> Die Li Elemente sind per CSS ausgeblendet (natürlich die UL auch).
das ist ungünstig - blende \*nur\* die ul-Elemente aus. Die Kindelemente sind damit automatisch auch "weg".
> Nun möchte ich per JS diese Elemente einblenden. Dafür habe ich jedoch nur die ID der <ul>s zur Verfügung
> Wie kann ich die LI Elemente ansteuern, wenn ich nur die ID des jeweiligen UL kenne?
Das brauchst du dann nicht mehr.
Aber selbst wenn die li-Elemente noch behandelt werden müssen ...
> ~~~javascript
function enableBox(meineId) {
> var allElems = document.getElementsByTagName('ul');
> for (var i = 0; i < allElems.length; i++) {
> var thisElem = allElems[i];
> if (thisElem.id && thisElem.id == meineId) {
> // und nun die LIs?
> }
> }
> }
... autsch! Warum versuchst du, getElementById() nachzuprogrammieren? Und dann, wie ChrisB schon sagte: Wenn du das ul-Element im DOM gefunden hast, und getElementsByTagName() kennst - wo liegt dann das Problem?
Am einfachsten würde es über CSS #meineID1 li{display:block;} gehen.
Doch meines Wissens kann ich per JS nur auf die ID, Class etc zugreifen, aber nicht auf Elemente mit ID einschränkungen.
Hä? Du sprichst in Rätseln.
So long,
Martin
Mahlzeit keinBlase,
function enableBox(meineId) {
var allElems = document.getElementsByTagName('ul');
for (var i = 0; i < allElems.length; i++) {
var thisElem = allElems[i];
if (thisElem.id && thisElem.id == meineId) {
Kürzer:
thisElem = document.getElementById(meineId);
// und nun die LIs?
Ich kann ChrisB nur beipflichten: was genau ist eigentlich Dein Problem? Du schaffst es, mittels http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_tag_name@title=getElementsByTagName() auf alle <ul> innerhalb des Dokuments zuzugreifen, scheiterst aber daran, auf dieselbe Art und Weise auf alle <li> innerhalb eines <ul> zuzugreifen?
Sic transit gloria mundi ...
Am einfachsten würde es über CSS #meineID1 li{display:block;} gehen.
Natürlich. Was genau hindert Dich daran?
Doch meines Wissens kann ich per JS nur auf die ID, Class etc zugreifen, aber nicht auf Elemente mit ID einschränkungen.
Hä? Was genau meinst Du?
MfG,
EKKi