Christian Bothe: Quelltext mit replace überprüfen

Hallo!

Ich versuche gerade ein Java-Script zu schreiben, welches im gesamten Quelltext Hans durch Dieter ersetzt. Mit einer Variable funktioniert es tadellos.

Wie schaffe ich das im gesamten Quelltext bzw. dem Text der im <body> steht? Danke für eure Hilfe.

<html>
<head>
<SCRIPT LANGUAGE="JavaScript">
var y = 'Hans und Anna sitzen im Haus. Hans raucht.';
y = y.replace(/Hans/g, "Dieter");
document.write(y);
document.close();
void(0);
</script>
</head>
<html>
.................
</body>
</html>

  1. Hi,

    Ich versuche gerade ein Java-Script zu schreiben, welches im gesamten Quelltext Hans durch Dieter ersetzt. Mit einer Variable funktioniert es tadellos.

    y = y.replace(/Hans/g, "Dieter");

    Um statt Hans den Inhalt einer Variablen dorthin zu bekommen, erzeuge dir zunaechst ein neues RegExp-Objekt.

    Fuer ein Beispiel siehe http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:RegExp

    MfG ChrisB

    1. Danke für deinen Tipp.

      Die replace-Funktion funktioniert einwandfrei. In meinem Script benutze ich reguläre Ausdrücke. Ich habe Dieter und Hans nur als Beispiel genommen.

      Ich frage mich nur, wie ich die Ausdrücke im ganzen Text (body) prüfen kann.

  2. Hallo Christian Bothe,

    Wie schaffe ich das im gesamten Quelltext bzw. dem Text der im <body> steht?

    Du könntest mit innerHTML auf den Inhalt des Dokumentenbodys zugreifen.

    var oldStr = document.body.innerHTML; // der Inhalt  
    var newStr = oldStr.replace(/foo/gi, "bar");  // Ersetze  
    document.body.innerHTML = newStr; // neuen Inhalt zuweisen
    

    Das ganze funktioniert jedoch nur dann sinnvoll, wenn nicht (ausversehen) auch HTML-Tag oder Attribute überschrieben werden.

    Mit freundlichem Gruß
    Micha

    1. Vielen Dank für den Tipp. So ungefähr habe ich mir das vorgestellt.

      var oldStr = document.body.innerHTML; // der Inhalt

      var newStr = oldStr.replace(/foo/gi, "bar");  // Ersetze
      document.body.innerHTML = newStr; // neuen Inhalt zuweisen

        
      Ich habe deine Zeilen mal ausprobiert.  
      Bekomme das nicht zum laufen.  
      Der meldet immer das ein Objekt in der ersten Zeile erforderlich ist.
      
      1. Hi,

        var oldStr = document.body.innerHTML; // der Inhalt

        Der meldet immer das ein Objekt in der ersten Zeile erforderlich ist.

        Diesen Code darfst du natuerlich nicht ausfuehren, bevor es ueberhaupt einen Body gibt.

        MfG ChrisB

      2. Hallo Christian Bothe,

        Der meldet immer das ein Objekt in der ersten Zeile erforderlich ist.

        wie ChrisB schon schrieb, darfst/kannst Du erst auf ein Element zu greifen, wenn dieses existiert. Mit dem Event onload könntest Du es lösen:

          
        window.onload = function(e) {  
          // hier die Anweisungen  
        };
        

        Mit freundlichem Gruß
        Micha