Hummerfreund: Bestimmtes Wort durch ein mit Html ausgezeichnetes Wort ersetzen

Hy,

ich suche nach einer Möglichkeit, innerhalb eines Textes ein bestimmtes Wort
durch ein - mit Tags versehenes Wort - zu ersetzen:

Beispieltext: "Blabla bla blabla Hausfrau bla bla bla."

Gesucht wird im Beispieltext das Wort "Hausfrau", das durch <span>Hausmann</span> ersetzt werden soll.

Text gegen Text austauschen geht ja wunderbar mit Regulären Ausdrücken; hier kann ich aber einen zu suchenden Ausdruck leider nur durch einen String ersetzen.

Weiß jemand Rat ? Geht das überhaupt ? Hab' so meine Zweifel ...

Mfg Hummerfreund

  1. Mahlzeit Hummerfreund,

    Text gegen Text austauschen geht ja wunderbar mit Regulären Ausdrücken; hier kann ich aber einen zu suchenden Ausdruck leider nur durch einen String ersetzen.

    Ja und? Genau das willst Du doch - dafür gibt's z.B. die Methode http://de.selfhtml.org/javascript/objekte/string.htm#replace@title=replace(). Oder habe ich Dich falsch verstanden?

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Ja, falsch verstanden:

      ich will als Ergebnis <span>Hausmann</span> statt "Hausfrau".

      Ein regulärer Ausdruck müsste dann so aussehen:

      wert = mein Testtext;

      reg = /\bHausfrau\b/;

      if (reg.test(wert))
      wert = wert.replace(/\bHausfrau\b/,'<span>Hausmann</span>');

      Dieses Konstruckt ist aber leider nicht zuläßig ...

      MFG Hummerfreund

      1. wert = wert.replace(/\bHausfrau\b/,'<span>Hausmann</span>');

        Dieses Konstruckt ist aber leider nicht zuläßig ...

        Was soll daran nicht zulässig sein?

        "bla Hausfrau bla".replace(/\bHausfrau\b/, "<span>Hausmann</span>") ergibt "bla <span>Hausmann</span> bla", wo ist das Problem?

        Mathias

        1. Mit replace kann ich doch den zu ersetzenden Ausdruck nur durch einen String ersetzen - nicht duch HTML-Code.

          Als Ergebnis soll ja nicht der HTML-Code sichtbar sein, sondern nur (in meinem Beispiel) das Wort "Hausmann".

          Das Wort soll dann aber um Tags ergänzt sein, zum Beispiel, um es über "onclick" anklickbar zu machen ...

          1. Mit replace kann ich doch den zu ersetzenden Ausdruck nur durch einen String ersetzen - nicht duch HTML-Code.

            Da musst du etwas missverstanden haben.
            Auf der Ebene von JavaScript gibt es nur Strings, und HTML-Code liegt auch immer als String vor. replace() ersetzt Teilstrings durch Teilstrings, mehr nicht. Ob in diesen Strings nun <span> vorkommt oder nicht, ist für replace() erstmal schnuppe.

            Als Ergebnis soll ja nicht der HTML-Code sichtbar sein, sondern nur (in meinem Beispiel) das Wort "Hausmann".

            Dein Aufruf von replace() ist schon ganz richtig. Die Frage ist, was du anschließend mit dem Text machst. Vermutlich baust du ihn wieder über das DOM ins Dokument ein. Wenn ja, wie? Dort liegt eher die Ursache dafür, dass der HMTL-Code sichtbar wird anstatt als solcher interpretiert zu werden.

            Vermutlich suchst du http://de.selfhtml.org/javascript/objekte/node.htm#node_value@title=innerHTML eines Elementknotens anstelle von http://de.selfhtml.org/javascript/objekte/node.htm#node_value@title=nodeValue oder data des zugehörigen Textknotens.

            Mathias

            1. Die Frage ist, was du anschließend mit dem Text machst. Vermutlich baust du ihn wieder über das DOM ins Dokument ein. Wenn ja, wie? Dort liegt eher die Ursache dafür, dass der HMTL-Code sichtbar wird anstatt als solcher interpretiert zu werden.

              Ja, der Text wird - vereinfacht dargestellt - über data aus dem Elternelement ausgelesen, soll an bestimmten Stellen durch Tags "prepariert" und über DOM wieder ins Dokument eingebaut werden. Beim Zurückschreiben müßte innerHTML doch die richtige Wahl sein - oder ?

              1. Beim Zurückschreiben müßte innerHTML doch die richtige Wahl sein - oder ?

                beim lesen auch, wenn ich mich nicht irre

                  
                foo.innerHTML = foo.innerHTML.replace();
                
          2. Yerf!

            Als Ergebnis soll ja nicht der HTML-Code sichtbar sein, sondern nur (in meinem Beispiel) das Wort "Hausmann".

            Wo ist dabei das Problem? oder sucht du nur http://de.selfhtml.org/javascript/objekte/all.htm#inner_html@title=innerHTML?

            Gruß,

            Harlequin

            --
            <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->