Christian: innerhtml replace

Hallo zusammen,

ich versuche bei mir mittels JavaScript dynamisch Acronyme in die Seite zu intregrieren:

function doacronym() {
var source;
source = document.body.innerHTML;

source = source.replace(/\b\sMeinseitenname\b/gi, ' <acronym title="Name; Der Name unserer Seite ;-)">$1</acronym> ');

document.body.innerHTML = source;
}

Leider replact das auch in HTML Tags so daß:
<a href="http://www.Meinseitenname.de">Link</a>

In das gewandelt wird:
<a href="http://www.<acronym title="Name; Der Name unserer Seite ;-)">Meinseitenname</acronym>.de">Link</a>

Das macht natürlich die Links kaputt. Kann man das so umbauen daß in HTML Tags nicht replact werden darf?

  1. Hi,

    Kann man das so umbauen daß in HTML Tags nicht replact werden darf?

    ja. Verwende einfach nicht innerHTML, sondern durchlaufe den DOM-Baum und beschränke Dich bei der Ersetzung auf Text-Nodes.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. ja. Verwende einfach nicht innerHTML, sondern durchlaufe den
      DOM-Baum und beschränke Dich bei der Ersetzung auf Text-Nodes.

      Uff dafür reicht meine Kenntnis nicht aus. Hast du einen Narrensicheren Beispiellink für Idioten wie mich? ;-)

      1. Hi,

        ja. Verwende einfach nicht innerHTML, sondern durchlaufe den
        DOM-Baum und beschränke Dich bei der Ersetzung auf Text-Nodes.
        Uff dafür reicht meine Kenntnis nicht aus.

        damit ist das zu lösende Problem ja schon mal erkannt ;-)

        Hast du einen Narrensicheren Beispiellink für Idioten wie mich? ;-)

        Aber sicher doch: Als Basis dienen http://de.selfhtml.org/javascript/, http://suche.de.selfhtml.org/ und http://www.google.de/, und wenn Du nicht weiterkommst, hilft http://forum.de.selfhtml.org/ bzw. genauer https://forum.selfhtml.org/?t=133346&m=863853 weiter. Geh erst mal systematisch an die Angelegenheit heran, bevor Du das Handtuch wirfst.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hi,

          ja. Verwende einfach nicht innerHTML, sondern durchlaufe den
          DOM-Baum und beschränke Dich bei der Ersetzung auf Text-Nodes.
          Uff dafür reicht meine Kenntnis nicht aus.

          damit ist das zu lösende Problem ja schon mal erkannt ;-)

          Hast du einen Narrensicheren Beispiellink für Idioten wie mich? ;-)

          Link hab ich keinen, aber ich kann ja kurz erklären wie ich es angehen würde:

          Schleife durch alle DOM-Elemente des Typs Text (zB damit: http://de.selfhtml.org/javascript/objekte/node.htm#node_type)
          und bei all diesen Elementen tust du dann ersetzen.

          Auch nicht viel, aber ein Startpunkt ;-)

          lg
          Thomas

          1. Auch nicht viel, aber ein Startpunkt ;-)

            Und der reicht ;-)
            Danke!

        2. Hi Cheatah,

          Geh erst mal systematisch an die Angelegenheit heran, bevor Du das Handtuch wirfst.

          das Handtuch? Du meintest doch wohl das Handbuch?  ;-)

          Ciao,
           Martin

          --
          Lieber blau machen, als sich schwarz ärgern.
  2. Hallo,

    In diesem Thread zu einer ähnlichen Frage findest du Beispiele für zwei Lösungsmöglichkeiten:

    </archiv/2004/9/t88864/>

    Eine DOM-Lösung sowie eine innerHTML-Lösung.

    Mathias