MudGuard: Zeichen färben

Beitrag lesen

Hi,

in Liedtexten nutze ich das Zeichen | als Taktstrich.

Nun möchte ich alle | rot einfärben. Mit css funktioniert es so nicht:

  p[|] {
    color: #f00;
  }

[] ist für Attributselektoren. | ist kein Attribut.

document.getElementsByTagName( "body" )[0].innerHTML
 = document.getElementsByTagName( "body" )[0].innerHTML.replace(/|/g, "<b class=crot>|</b>");

replace(/|/g, sagt: ersetze nichts ODER nichts, sooft es vorkommt. Das | ist im Regex das ODER.

| hat eine Sonderbedeutung im regulären Ausdruck - wenn Du wirklich das Zeichen | finden (und ersetzen) willst, mußt Du es im Regex escapen. Also /\|/g

Seltsamer Effekt: Dieser js-code fügt zwischen Zeichen den roten Taktstrich ein, wobei die HTML-Angaben zerstört werden:

Das ist kein seltsamer Effekt, das ist das erwartete Verhalten. "Nichts" findet sich jeweils zwischen zwei Zeichen, und dieses "Nichts" wolltest Du ja durch <b class=crot>|</b> ersetzt haben. Daß das auch zwischen den Zeichen der Tags passiert, ist logisch, Du bearbeitest ja innerHTML.

cu,
Andreas a/k/a MudGuard