Alle Elemente eines Div´s ermitteln
craine
- javascript
HI,
gibt es irgendwie ne Möglichkeit alle Elemente einer DIV zu ermitteln, also dass ich dann aus folgendem Code:
<div id="box">
<span>Hallo</span><b>blub</b>
</div>
Den Span und den B-Tag ermitteln kann?
Ich habe bereits mit Nodes ein bisschen ausprobiert, allerdings kam ich hier nicht zur Lösung, da ich via DOM gerne darauf zugreifen möchte ;)
Gibt es da eine Möglichkeit bzw habe ich was bei nodes übersehen?
Hi,
Gibt es da eine Möglichkeit bzw habe ich was bei nodes übersehen?
http://de.selfhtml.org/javascript/objekte/node.htm#child_nodes
MfG ChrisB
Genau da war ich auch drauf, nur wie kann ich jetzt via DOM darauf zugreifen?
Hi,
Genau da war ich auch drauf, nur wie kann ich jetzt via DOM darauf zugreifen?
Wie wär's, wenn du das Beispiel mal anschaust und die Beschreibung auch mal liest ...?
Und wenn du danach immer noch nicht zum Ziel kommst - dann beschreibe bitte, was du probiert hast, und was du dir dabei gedacht hast.
</hilfe/charta.htm#tipps-fuer-fragende>
MfG ChrisB
Ich habe mir bereits alles durchgelesen, aber die Beschreibung hat nicht zu meinem Problem gepasst, deshabl hab ich ja den Thread eröffnet^^
Zu meinem Problem: Ich möchte auf ein childNode wie auf ein Objekt zugreifen können; Hier kann ich zwar die länge auslesen, aber nicht das Style oder ähnliches bearbeiten, wie zum Beispiel die Farbe zu ändern.
cn = document.getElementById("text").childNodes
for(i = 0; i < cn.length; i++){
cn[i].style.color = "#ffff00";
}
Der Code schlägt fehl, da die childNode nicht als Objekt konvertiert werden kann.
[latex]Mae govannen![/latex]
Zu meinem Problem: Ich möchte auf ein childNode wie auf ein Objekt zugreifen können; Hier kann ich zwar die länge auslesen, aber nicht das Style oder ähnliches bearbeiten, wie zum Beispiel die Farbe zu ändern.
cn = document.getElementById("text").childNodes
for(i = 0; i < cn.length; i++){
cn[i].style.color = "#ffff00";
}
> Der Code schlägt fehl, da die childNode nicht als Objekt konvertiert werden kann.
Du hast also (wahrscheinlich) den Abschnitt „Beachten Sie“ bei childnodes ignoriert. Bau in die Schleife noch eine if-abfrage ein, die den style nur bei passendem nodetype setzt.
Stur lächeln und winken, Männer!
Kai
--
Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken
in Richtung "Mess up the Web".([suit](https://forum.selfhtml.org/?t=197497&m=1324775))
[SelfHTML-Forum-Stylesheet](http://selfhtml.knrs.de/#h_stylesheet)
gelesen schon, aber ich wusste halt nunmal nicht, wie ich darauf "reagieren" soll...
Hallo craine,
Der Code schlägt fehl, da die childNode nicht als Objekt konvertiert werden kann.
und wie äußert sich das? Vermutlich hast du mehr Kinder angetroffen als erwartet. Auch Zeilenumbrüche / Leerzeichen zwischen den Tags sind in den meisten Browsern Knoten.
Gruß, Jürgen
Da ich ja nicht weiß, wie es funktioniert habe ich einfach folgenden Code genommen:
var cn = document.getElementById("test").childNodes;
for(i = 0; i < cn.length; i++){
try{
cn[i].style.color = "#ffff00";
}
catch(e){alert(e);}
}
Dabei bekomme ich folgenden Fehler:
TypeError: Cannot convert 'cn[i].data.style' to object
Hallo craine,
und welcher Knoten wirft den Fehler?
Gruß, Jürgen
Leider alle :(
In jedem durchgang (insgesamt 3) bekomme ich immer wieder eine Exception zurück.
Ich habe mir jetzt eine Funktion geschrieben, in der ich via getElementsByTagName("*"); alle Elemente raussuche.
Hallo craine,
als Ergänzung zu ChrisBs Antwort:
Man kann die getElement...-Methoden auch auf Knoten anwenden:
document.getElementById("ID_des_DIVs").getElementsByTagname("*")
liefert dir alle Elemente im DIV.
Gruß, Jürgen
Aah, vielen Dank, das habe ich nicht gewusst, dass * alle Kombinationen liefert :)
Mahlzeit craine,
Aah, vielen Dank, das habe ich nicht gewusst, dass * alle Kombinationen liefert :)
Woher auch, das steht ja schließlich erst im zweiten Absatz <http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_tag_name@title=des entsprechenden Abschnitts von SELFHTML> ... ;-)
SCNR
MfG,
EKKi
Ich weiß ja nicht, wie es hier so üblich ist, aber ich denke mal, dass man es hier schreibt, dass man die Lösung vom Problem nun hat.
Ich habe es jetzt einfach via getElementsByTagName("*") gelöst, hier mein Code für alle, die es auch interessiert:
tag = document.getElementById("result").getElementsByTagName("*");
for (var i = 0; i < tag.length; i++)
{
if (tag[i].style)
{
tag[i].style.color = "#ff0";
}
}
Danke nochmal für alle Rückmeldungen :)