Hallo,
... Da td und th immer Kinder von tr sind, ist der Selektor tr>td bzw. tr>th redundant formuliert; td oder th allein (plus eventuelle Pseudoklassen) genügen.
Okay, dann habe ich die Zählung im DOM-Konzept überhaupt nicht verstanden.
sieht so aus.
Ich könnte mir mit Javascript doch wohl sämtliche
td
greifen und dem ersten im Dokument eine Hintergrund-Farbe geben?var arr_td = document.getElementsByTagName( "td" ); arr_td[0].style.background = "#ff0";
Das bedeutet übersetzt: Besorge mir eine Liste sämtlicher td-Elemente im Dokument(!) und weise dem ersten davon einen bestimmten Style zu.
Wohlgemerkt, du rufst die Methode getElementsByTagName() bezogen auf document auf, sie sucht also das ganze Dokument ab.
Aber CSS sieht das gaaaanz anders ... null (Ziffer 0) ist dort sowieso 1 ...
Ja, das stört mich auch immer wieder ...
td:nth-of-type(1) {background:#f00}
... und tatsächlich, der haut das in jede Tabelle, in jede Zeile ...
Ja, weil die Pseudoklasse :nth-of-type(n) ebenso wie ihre Verwandten sich immer auf die Reihenfolge bezogen auf das Elternelement beziehen, nicht global aufs ganze Dokument.
kopfschüttel
Schüttel den Kopf, wenn es dir hilft; wichtig ist hier nur zu erkennen: CSS selektiert immer in einem Ast des DOM, die Javascript-Methoden in dem Element, auf dem sie aufgerufen werden. Ja, getElementsByTagName() kann auch auf einem beliebigen anderen Element als document aufgerufen werden. Und dann verhält es sich ebenso "lokal" wie ein entsprechender CSS-Selektor.
Da lasse ich es bewusst bei der Redundanz, falls CSS später mal die Logik entdeckt.
Du meinst wohl: Falls du später mal die Logik entdeckst. ;-)
So long,
Martin
Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
- Douglas Adams, The Hitchhiker's Guide To The Galaxy