Hi,
so, um noch mal auf die Sache mit der Logik zurückzukommen ...
Also, so scheint's auch zu gehen:
alert ( document.getElementsByClassName('t01')[0].document.getElementsByClassName('ort_name')[0].innerHTML );
Aus dem ursprünglich gezeigten Code und diesem hier schliesse ich jetzt mal, dass du nur die Elemente mit einer bestimmten Eigenschaft (name/class) \*unterhalb\* eines anderen Elementes haben willst.
> Ein Dokument im Dokument. Da muss man erstmal drauf kommen.
>
> Mit Logik hat das jetzt nichts mehr zu tun, oder?
Nein, so wie du es betrachtest zumindest nicht.
Ein "Dokument im Dokument" ist schon widersprüchlich. Wenn (I)Frames im Spiel sind, dann könnte man diese Formulierung evtl. noch verwenden, ist hier aber wohl nicht der Fall.
Da du diesen Zweig ja in erster Hinsicht für den IE entwickelt hast, schauen wir doch mal in der MSDN nach, und zwar beim [Element Prototyp](http://msdn.microsoft.com/en-us/library/dd347058%28VS.85%29.aspx). Von dem erben alle HTML-Element-Objekte, und der bringt eine Eigenschaft document mit. Deren Beschreibung wiederum ist etwas an der Sache vorbei, bzw. eher falsch:
"Retrieves the HTML document in a given popup window."
Popups sind bei uns nicht im Spiel, und ausserdem wäre es unsinnig, wenn \*jedes\* HTML-Element-Objekt irgendwie einen Bezug zu einem Popup bereitstellen würde - wozu sollte das gut sein?
Da bspw. `javascript:alert(document.body.document === document);`{:.language-javascript} im IE in die Adresszeile eingetippt true ergibt, können wir schliessen, dass über diese Eigenschaft jeder HTML-Element-Knoten schlicht und einfach eine Referenz auf das Dokument, in dem er sich befindet bzw. zu dem er gehört, bereitstellt. (Analog zu bspw. Formularelementen, bei denen wir in der Eigenschaft form die Referenz auf das Formular, zu dem sie gehören, vorfinden.)
Mit dieser Erkenntnis jetzt zurück zu deinem obigen Code,
> `alert ( document.getElementsByClassName('t01')[0].document.getElementsByClassName('ort_name')[0].innerHTML );`{:.language-javascript}
- du ermittelst dir hier die Referenz auf das erste Element mit der Klasse t01 im Dokument, und gehst von dieser dann wieder zurück auf's Dokument - also ein ebenso redundanter wie sinnfreier Schritt, denn da hättest du gleich
`alert ( document.getElementsByClassName('ort_name')[0].innerHTML );`{:.language-javascript}
verwenden können, und würdest genau das selbe Ergebnis erhalten.
Und wenn also meine obige Vermutung, dass du nur die Elemente mit der Klasse ort\_name, die Nachfahren des ersten Elements mit Klasse t01 sind, haben willst - dann macht dein Code also noch nicht mal das, denn er würde dir (wenn du den zweiten Index hochzählst, also über alle gefundenen Elemente iterierst) \*alle\* Element mit Klasse ort\_name im Dokument liefern, egal ob diese nun Nachfahren ersten vom Element mit Klasse t01 sind oder nicht.
Du hast eine "Lösung", die also nicht mal eine ist, nach einem knappen Blick drauf mit
> Also, so scheint's auch zu gehen
bewertet.
Von einem Softwareentwickler hätte ich jetzt eigentlich erwartet, dass er dazu wenigstens mal einen minimalen Testcase erstellt, um die Vermutung, dass der Code das gewünschte bewirkt, zu verifizieren bzw. in diesem Falle sehr schnell zu falsifizieren.
Du hingegen hast dich offenbar mit "Hey cool, das funzt" zufriedengegeben, und dabei ist dir vermutlich nicht mal aufgefallen, dass das vielleicht zufällig im vorliegenden speziellen Anwendungsfall zwar so sein mag, in allgemeineren Szenarien (wo genau das oben formulierte Ergebnis erwartet/vorausgesetzt wird) aber ganz und gar nicht.
MfG ChrisB
--
“Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]