Teh Nethacker: Umlaute ersetzen

Hallo,
Ich habe aus "Langeweile" eine Funktion geschrieben, die mir die Umlaute ersetzen soll. Leider funktioniert diese nicht, da sie bei dem Satz "Ändere und übe die Wörter" nur "Ändere und übe die Wörter" ausgibt.

Die Funktion:

<script type="text/javascript">  
        <!--  
          function rep_u()  
            {  
              if(document.workspace.umlaute.checked == true)  
                {  
                  var text = document.workspace.work.value;  
                  document.workspace.work.value = text.replace(/Ä/g, "&Auml;");  
                  document.workspace.work.value = text.replace(/ä/g, "&auml;");  
                  document.workspace.work.value = text.replace(/Ö/g, "&Ouml;");  
                  document.workspace.work.value = text.replace(/ö/g, "&ouml;");  
                  document.workspace.work.value = text.replace(/Ü/g, "&Uuml;");  
                  document.workspace.work.value = text.replace(/ü/g, "&uuml;");  
                  //document.workspace.work.value = text.replace(/ß/g, "&szlig;");  
                  //document.workspace.work.value = text.replace(/é/g, "&eacute;");  
                }  
            }  
        //-->  
        </script>

Woran kann das liegen?

mfg

  1. Woran kann das liegen?

    Daran, dass du immer au deinem kopierten Original heraus arbeitest und darauf hin die Ergebnisvariable von vorherigen Ersetzungen überschreibst.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. Es dient alles einem bestimmten Zweck für einen Konverter.. Ich kann gerne auf solche unnötigen Kommentare verzichten, zumal nur 1-2 gute Antworten zutreffen.

      1. Liebe(r) Teh,

        Ich kann gerne auf solche unnötigen Kommentare verzichten

        da hast Du ihn jetzt aber gründlich missverstanden! Beat sprach nicht davon, wie Du mit Quelltexten Deiner Scripte umgehst, sondern er sprach davon, wie Du im obigen Code-Beispiel programmiertechnisch mit Variablenwerten verfährst!

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
      2. Mahlzeit Teh Nethacker,

        Ich kann gerne auf solche unnötigen Kommentare verzichten,

        Was für ein Problem hast Du denn? Beats Kommentar war mitnichten unnötig, sondern hat präzise zusammengefasst die Ursache für Dein "Problem" dargestellt.

        Wenn Du das nicht verstanden hast, solltest Du nachfragen - rumpöbeln hingegeben hilft Dir nicht weiter. Und Deine Leser schreckt es eher ab.

        MfG,
        EKKi

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

    Ich habe aus "Langeweile" eine Funktion geschrieben, die mir die Umlaute ersetzen soll. Leider funktioniert diese nicht, da sie bei dem Satz "Ändere und übe die Wörter" nur "Ändere und &uuml;be die Wörter" ausgibt.

    Das liegt daran, dass ü das letzte Zeichen ist, welches du ersetzt.

    var text = document.workspace.work.value;
                      document.workspace.work.value = text.replace(/Ä/g, "&Auml;");
                      document.workspace.work.value = text.replace(/ä/g, "&auml;");
                      document.workspace.work.value = text.replace(/Ö/g, "&Ouml;");
                      document.workspace.work.value = text.replace(/ö/g, "&ouml;");
                      document.workspace.work.value = text.replace(/Ü/g, "&Uuml;");
                      document.workspace.work.value = text.replace(/ü/g, "&uuml;");
                      //document.workspace.work.value = text.replace(/ß/g, "&szlig;");
                      //document.workspace.work.value = text.replace(/é/g, "&eacute;");

    Du ersetzt hier jeweils ein Zeichen des Inhaltes, der in text vorliegt, und speicherst das *Ergebnis* dieser Ersetzung in document.workspace.work.value - und dann machst du im nächsten Schritt mit dem weiterhin unveränderten Inhalt von text weiter.

    MfG ChrisB

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
  3. Lieber Teh,

    die Antwort auf Deine Frage hat man Dir ja schon gegeben. Daher hier eine visuell verstörende Version dessen, was Du vorhast:

    <script type="text/javascript">~~~javascript //<![CDATA[
    function rep_u() {
        if(document.workspace.umlaute.checked == true) {
            var t = document.workspace.work;
            t.value = t.value.replace(
               /Ä/g, "&Auml;"
            ).replace(
               /ä/g, "&auml;"
            ).replace(
               /Ö/g, "&Ouml;"
            ).replace(
               /ö/g, "&ouml;"
            ).replace(
               /Ü/g, "&Uuml;"
            ).replace(
               /ü/g, "&uuml;"
            ).replace(
               /ß/g, "&szlig;"
            ).replace(
               /é/g, "&eacute;"
            );
        }
    }
    //]]>

      
    Zugegeben, schön ist anders. Aber sieht doch echt verwirrend aus, oder?  
      
    Eine andere Methode:  
      
    `<script type="text/javascript">`{:.language-html}~~~javascript
    //<![CDATA[  
    function rep_u() {  
        if(document.workspace.umlaute.checked == true) {  
            var t = document.workspace.work;  
            var transformations = [  
                ["Ä", "&Auml;"],  
                ["ä", "&auml;"],  
                ["Ö", "&Ouml;"],  
                ["ö", "&ouml;"],  
                ["Ü", "&Uuml;"],  
                ["ü", "&uuml;"],  
                ["ß", "&szlig;"],  
                ["é", "&eacute;"]  
            ];  
      
            for (i = 0; i < transformations.length; i++) {  
                t.value = t.value.replace(  
                    new RegExp(transformations[i][0], "g"),  
                    transformations[i][1]  
                );  
            }  
        }  
    }  
    //]]>
    ~~~`</script>`{:.language-html}  
      
    Liebe Grüße,  
      
    Felix Riesterer.
    
    -- 
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    
  4. @@Teh Nethacker:

    Ich habe aus "Langeweile" eine Funktion geschrieben, die mir die Umlaute ersetzen soll.

    Wenn du Langeweile hast, warum programmierst du dann nicht etwas Sinnvolles? Zeichen durch Entityrefenzen zu ersetzen ist nicht sinnvoll.

    Live long and prosper,
    Gunnar

    --
    Das einzige Mittel, den Irrtum zu vermeiden, ist die Unwissenheit. (Jean-Jacques Rousseau)
    1. Wenn du Langeweile hast, warum programmierst du dann nicht etwas Sinnvolles? Zeichen durch Entityrefenzen zu ersetzen ist nicht sinnvoll.

      Na warte, bis seine langeweile bis zur Umkehrfunktion fortschreitet...
      Alles hat zwei Seiten.

      mfg Beat

      --
      ><o(((°>           ><o(((°>
         <°)))o><                     ><o(((°>o
      Der Valigator leibt diese Fische
      1. @@Beat:

        Na warte, bis seine langeweile bis zur Umkehrfunktion fortschreitet...

        *G*

        Alles hat zwei Seiten.

        Wobei sich die Sinnhaftigkeit, die in JavaScript zu tun, immer noch nicht erschließt. Wenn der Quelltext erst einmal im Browser ist, ist es völlig egal, ob 'ä' oder '&auml;' drinsteht.

        Live long and prosper,
        Gunnar

        --
        Das einzige Mittel, den Irrtum zu vermeiden, ist die Unwissenheit. (Jean-Jacques Rousseau)