Der Martin: Einfärbung von Textteilen

Beitrag lesen

Hi,

du hast in deinem Codebeispiel einige Sünden und Unbeholfenheiten drin. Zunächst die Sünden. :-)

if (document.Auswahl.Farbe[0].checked == true) { document.all.RedText.style.backgroundColor = "red"; }

Du verwendest hier document.all, eine reine Microsoft-Erfindung. Andere Browser wie z.B. Opera und eingeschränkt sogar Firefox spielen zwar kulanterweise auch mit, es ist aber besser, zu vergessen, dass es je so etwas wie das all-Objekt des IE4 gegeben hat.

Das funktioniert schonmal, sobald ich aber ein weiteres span einfüge (ich möchte ja mehrere Wörter markiert haben), mit der ID "RedText" zB, dann wird garkeine der Farben mehr gesetzt.

Damit willst du hoffentlich nicht andeuten, dass du mehrere Elemente mit derselben ID haben möchtest? Das ist nicht zulässig. Ein ID-Wert muss in einem Dokument eindeutig sein und darf demzufolge nur einmal vorkommen. Du möchtest das Konzept wohl eher mit Klassen als mit IDs realisieren.

Nun zum Unbeholfenen.

if (document.Auswahl.Farbe[0].checked == true) ...

"Wenn es wahr ist, dass x wahr ist, ..."

Diese Formulierung sieht man immer wieder; ich weiß nicht, wer die zum ersten Mal verwendet hat. Wenn ich den erwische, trete ich ihn in den Hintern, bis er lacht. Und dann nochmal, weil er lacht.
Ein einfaches

if (document.Auswahl.Farbe[0].checked)

erfüllt genau denselben Zweck und ist leichter lesbar. Da die checked-Eigenschaft bereits einen boolschen Wert hat, ist es unnötig, diesen nochmal mit der Konstanten true zu vergleichen, um einen boolschen Wert als Ergebnis zu bekommen.

Aber vielleicht wäre es noch schön, sich manchmal mehrere Gruppen anzeigen zu lassen

Und da zu einer Gruppe mehrere Textabschnitte gehören können, darf man sie nicht mit IDs markieren, sondern am besten mit Klassen. Die gewünschten Elemente sucht man sich dann mit getElementsByClassName() heraus - dabei beachten, dass es mehrere sein können - und setzt oder löscht bei den so ermittelten Elementen eine zusätzliche Klasse. Die Darstellung regelt man dann ausschließlich übers externe Stylesheet.

Dann wäre es aber Möglich, dass Wörter zu verschiedenen Gruppen gehören. Ist es möglich diese Fälle abzufangen und die Farben dann zu mischen?

Denkbar, dann hat ein Abschnitt halt mehrere Klassen, und man muss jede Kombination im CSS einzeln definieren.

So long,
 Martin

--
Man soll den Tag nicht vor dem Abend loben.
Und den Mann nicht vor dem Morgen.
  (alte Volksweisheit)
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(