Vadym: Dynamisches Ändern eines JavaScripts

Folgendes Problem:
Von meinem Provider bekomme ich ein JavaScript zu Verfügung gestellt, dabei wird dieser so in meine Seite eingebunden: <script type="text/javascript" charset="UTF-8" src="http://www.***.de/tinc?key=script">.
Intern sieht dieser JavaScript so aus: "document.writeln('<div style...........)".

Jetzt möchte ich innerhalb des Scriptes etwas ersetzen, z.B. statt "Martin Müller" soll dann "Martin Meier" stehen!

Gefunden habe ich die Funktion replace(), aber ich kann diese nicht wirklich einsetzen, da ich eine Null in JavaScript bin, bitte beachtet das auch bei euren Antworten ;-)

  1. Jetzt möchte ich innerhalb des Scriptes etwas ersetzen, z.B. statt "Martin Müller" soll dann "Martin Meier" stehen!

    etwas ersetzen ist ein bisschen zu wage um dir helfen zu können.

    Gefunden habe ich die Funktion replace(), aber ich kann diese nicht wirklich einsetzen, da ich eine Null in JavaScript bin, bitte beachtet das auch bei euren Antworten ;-)

    willst du einen String ersetzen? Dann ist Replace eine gute Sache. Was hast du probiert und woran ist es gescheitert?

    Struppi.

    1. etwas ersetzen ist ein bisschen zu wage um dir helfen zu können.

      Ich möchte folgendes machen "a href" mit "a target="_blank" href" ersetzen.

      Was hast du probiert und woran ist es gescheitert?

      U.a. den Vorschlag von Steffen Weber, aber das klappte auch nicht...

      Ich werde das jetzt wohl doch Serverseitig  lösen, PHP ist ja auch dabei.

      Danke für eure Hilfe!

      1. etwas ersetzen ist ein bisschen zu wage um dir helfen zu können.
        Ich möchte folgendes machen "a href" mit "a target="_blank" href" ersetzen.

        Du meinst so:
        var string ="<a href="...">text</A>";
        var neu = string.replace( /a href/, 'a target="_blank" href');
        alert(neu);

        Was hast du probiert und woran ist es gescheitert?
        U.a. den Vorschlag von Steffen Weber, aber das klappte auch nicht...

        Natürlich klappt die Funktion.

        Nur mal als Tipp, klappt nicht oder funzt nicht, sind Fehlerbeschreibungen die es niemanden ermöglichen irgendeine Hilfe zu geben. Nur mit Hilfe von einem bisschen Code ist jemand in der Lage deine Fehler zu zeigen. Des Hellsehen ist hier niemand mächtig.

        Ich werde das jetzt wohl doch Serverseitig  lösen, PHP ist ja auch dabei.

        Naja, da ist die Funktion ja ähnlich.

        Struppi.

        1. puts "Hallo " + gets.chomp + "."

          ?> Struppi
          => Hallo Struppi.

          Du meinst so:

          var string ="<a href="...">text</A>";

          var neu = string.replace( /a href/, 'a target="_blank" href');
          alert(neu);

            
          Da du schon '' verwendest, sind die \" überflüssig:  
            
          `var neu = string.replace( /a href/, 'a target="_blank" href');`{:.language-javascript}  
            
            
          Einen schönen Donnerstag noch.  
            
          Gruß, Ashura  
          
          -- 
          Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|  
          [30 Days to becoming an Opera8 Lover](http://operalover.tntluoma.com/8/) -- [Day 20: search.ini](http://operalover.tntluoma.com/8/day_20_searchini)  
          Meine Browser: Opera 8.01 | Firefox 1.0.4 | Lynx 2.8.3 | Netscape 4.7 | IE 6.0  
          [\[Deshalb frei! - Argumente pro freie Software\]](http://deshalbfrei.org/)
          
          1. Da du schon '' verwendest, sind die " überflüssig:

            vermutlich, sie waren einfach aus dem Orginalcode, aber evtl. will der OP sie im String haben?

            Struppi.

            1. puts "Hallo " + gets.chomp + "."

              ?> Struppi
              => Hallo Struppi.

              Da du schon '' verwendest, sind die " überflüssig:

              vermutlich, sie waren einfach aus dem Orginalcode, aber evtl. will der OP sie im String haben?

              Ja, ist durchaus möglich.
              (Falls er dies doch selbst nicht wissen sollte, ist meine Anmerkung doch hilfreich.)

              Einen schönen Donnerstag noch.

              Gruß, Ashura

              --
              Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
              30 Days to becoming an Opera8 Lover -- Day 20: search.ini
              Meine Browser: Opera 8.01 | Firefox 1.0.4 | Lynx 2.8.3 | Netscape 4.7 | IE 6.0
              [Deshalb frei! - Argumente pro freie Software]
      2. Tag,

        etwas ersetzen ist ein bisschen zu wage um dir helfen zu können.
        Ich möchte folgendes machen "a href" mit "a target="_blank" href" ersetzen.

        Was hast du probiert und woran ist es gescheitert?
        U.a. den Vorschlag von Steffen Weber, aber das klappte auch nicht...

        <DIV ID=x>
        <script type="text/javascript" charset="UTF-8" src="http://www.***.de/tinc?key=script">
        </DIV>
        <script>
        var d = document.getElementById("x");
        d.innerHTML = d.innerHTML.replace("Martin Müller", "Martin Meier");
        </script>

          
        Versuch mal folgendes. Eventuell hast Du ein Timingproblem. Bedenke auch, daß das hier benutzte Replace nur das erste Vorkommen der gesuchten Zeichenkette ersetzt.  
          
        ~~~html
          
        <DIV ID=x>  
        <script type="text/javascript" charset="UTF-8" src="http://www.***.de/tinc?key=script">  
        </DIV>  
        <script>  
        function doIt() {  
          var d = document.getElementById("x");  
          alert(d.innerHTML);  
          d.innerHTML = d.innerHTML.replace("Martin Müller", "Martin Meier");  
        }  
        setTimeout(doIt, 2000);  
        </script>  
        
        

        Grüße,
        Steffen.

        1. puts "Hallo " + gets.chomp + "."

          ?> Steffen
          => Hallo Steffen.

          d.innerHTML = d.innerHTML.replace("Martin Müller", "Martin Meier");

          Ihr beide solltet euch einmal anschauen, wie replace() eingesetzt wird.

          Der erste Parameter muss ein regulärer Ausdruck sein, damit es funktionieren kann.

          Einen schönen Donnerstag noch.

          Gruß, Ashura

          --
          Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
          30 Days to becoming an Opera8 Lover -- Day 20: search.ini
          Meine Browser: Opera 8.01 | Firefox 1.0.4 | Lynx 2.8.3 | Netscape 4.7 | IE 6.0
          [Deshalb frei! - Argumente pro freie Software]
          1. Tag,

            puts "Hallo " + gets.chomp + "."
            ?> Steffen
            => Hallo Steffen.

            d.innerHTML = d.innerHTML.replace("Martin Müller", "Martin Meier");

            Ihr beide solltet euch einmal anschauen, wie replace() eingesetzt wird.

            Der erste Parameter muss ein regulärer Ausdruck sein, damit es funktionieren kann.

            Das ist so nicht richtig.
            Ein String kann auch als regulärer Ausdruck interpretiert werden.
            Ein ganz einfacher Test:

              
            alert("abc".replace("a", "A"));  
            alert("abc".replace(new RegExp("a"), "A"));  
            
            

            Diese beiden Zeilen ergeben genau das Gleiche/Selbe.
            Wenn ein String als erster Parameter in ein Replace übergeben wird, dann wird dieser String (wie oben) in eine nicht-globale und case-sensitive Regular Expression umgewandelt.

            Grüße,
            Steffen.

            1. puts "Hallo " + gets.chomp + "."

              ?> Steffen
              => Hallo Steffen.

              Wenn ein String als erster Parameter in ein Replace übergeben wird, dann wird dieser String (wie oben) in eine nicht-globale und case-sensitive Regular Expression umgewandelt.

              Tatsache, das kannte ich bisher nicht. Gibt es das irgendwo dokumentiert?
              Alles was ich finden konnte, beschränkte sich auf die (regex, string)-Regel.

              Einen schönen Donnerstag noch.

              Gruß, Ashura

              --
              Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
              30 Days to becoming an Opera8 Lover -- Day 20: search.ini
              Meine Browser: Opera 8.01 | Firefox 1.0.4 | Lynx 2.8.3 | Netscape 4.7 | IE 6.0
              [Deshalb frei! - Argumente pro freie Software]
              1. Tag,

                puts "Hallo " + gets.chomp + "."
                ?> Steffen
                => Hallo Steffen.

                Wenn ein String als erster Parameter in ein Replace übergeben wird, dann wird dieser String (wie oben) in eine nicht-globale und case-sensitive Regular Expression umgewandelt.

                Tatsache, das kannte ich bisher nicht. Gibt es das irgendwo dokumentiert?
                Alles was ich finden konnte, beschränkte sich auf die (regex, string)-Regel.

                Ich könnte leider auch nichts finden, aber ich wende es schon seit Jahren auf beide Arten an. Ich nehme einfach an, daß das mit der Untypisiertheit von JS zusammenhängt. Wenn JS einen Parameter von einem bestimmten Typ erwartet und dieser das nicht ist, dann wird versucht den Parameter in den gewünschten Typ umzuwandeln.

                Grüße,
                Steffen.

                1. puts "Hallo " + gets.chomp + "."

                  ?> Steffen
                  => Hallo Steffen.

                  Ich könnte leider auch nichts finden, aber ich wende es schon seit Jahren auf beide Arten an.

                  Da bist du anscheinend nicht der Einzige.

                  Ich nehme einfach an, daß das mit der Untypisiertheit von JS zusammenhängt. Wenn JS einen Parameter von einem bestimmten Typ erwartet und dieser das nicht ist, dann wird versucht den Parameter in den gewünschten Typ umzuwandeln.

                  Trifft auf JS zu, ja. Danke für die Information.

                  Einen schönen Donnerstag noch.

                  Gruß, Ashura

                  --
                  Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
                  30 Days to becoming an Opera8 Lover -- Day 20: search.ini
                  Meine Browser: Opera 8.01 | Firefox 1.0.4 | Lynx 2.8.3 | Netscape 4.7 | IE 6.0
                  [Deshalb frei! - Argumente pro freie Software]
                2. puts "Hallo " + gets.chomp + "."

                  ?> Steffen
                  => Hallo Steffen.

                  Ich könnte leider auch nichts finden, aber ich wende es schon seit Jahren auf beide Arten an.

                  Noch einmal vielen herzlichen Dank für diesen Tipp.
                  Damit konnte ich mehrere ifs mit RegExen durch eine Schleife und einem einfachen Array ersetzen.

                  Einen schönen Freitag noch.

                  Gruß, Ashura

                  --
                  Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
                  30 Days to becoming an Opera8 Lover -- Day 20: search.ini
                  Meine Browser: Opera 8.01 | Firefox 1.0.4 | Lynx 2.8.3 | Netscape 4.7 | IE 6.0
                  [Deshalb frei! - Argumente pro freie Software]
                  1. Tag,

                    puts "Hallo " + gets.chomp + "."
                    ?> Steffen
                    => Hallo Steffen.

                    Ich könnte leider auch nichts finden, aber ich wende es schon seit Jahren auf beide Arten an.

                    Noch einmal vielen herzlichen Dank für diesen Tipp.
                    Damit konnte ich mehrere ifs mit RegExen durch eine Schleife und einem einfachen Array ersetzen.

                    Natürlich hat man mit RegExp viel mehr Möglichkeiten.
                    Sowas geht natürlich auch ...

                      
                    var str = "irgendwas";  
                    var regs = [/i/g, "I", /a/g, "A", /w/g, "W"];  
                    for (var i = 0; i < regs.length; i += 2) {  
                      str = str.replace(regs[i], regs[i + 1]);  
                    }  
                    alert(str);  
                    
                    

                    RegExp's sind genial!

                    Grüße,
                    Steffen.

                    1. puts "Hallo " + gets.chomp + "."

                      ?> Steffen
                      => Hallo Steffen.

                      Natürlich hat man mit RegExp viel mehr Möglichkeiten.

                      Ich weiß. Sie sind eines der mächtigsten Werkzeuge des guten Programmierers. :-)

                      Sowas geht natürlich auch ...
                      [...]

                      Wenn ich Strings verwenden kann, tue ich es auch. Ich finde das performanter.

                      RegExp's sind genial!

                      Wenn man die Schwelle des Verständnisses überschritten hat, ja. Davor wirken sie wie Zeichensalat. ;-)

                      Einen schönen Freitag noch.

                      Gruß, Ashura

                      --
                      Selfcode: sh:( fo:) ch:? rl:( br:^ n4:& ie:{ mo:) va:) de:> zu:) fl:( ss:| ls:[ js:|
                      30 Days to becoming an Opera8 Lover -- Day 20: search.ini
                      Meine Browser: Opera 8.01 | Firefox 1.0.4 | Lynx 2.8.3 | Netscape 4.7 | IE 6.0
                      [Deshalb frei! - Argumente pro freie Software]
      3. Hi,

        etwas ersetzen ist ein bisschen zu wage um dir helfen zu können.
        Ich möchte folgendes machen "a href" mit "a target="_blank" href" ersetzen.

        Neben der PHP-Variante: Bei DHTML kann man einfach mit JS alle Links des *Dokumentes* durchgehen und das Target dynamisch nach Belieben ändern.

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  2. Tag,

    Folgendes Problem:
    Von meinem Provider bekomme ich ein JavaScript zu Verfügung gestellt, dabei wird dieser so in meine Seite eingebunden: <script type="text/javascript" charset="UTF-8" src="http://www.***.de/tinc?key=script">.
    Intern sieht dieser JavaScript so aus: "document.writeln('<div style...........)".

    Jetzt möchte ich innerhalb des Scriptes etwas ersetzen, z.B. statt "Martin Müller" soll dann "Martin Meier" stehen!

    naja, wenn Du es halbwegs sauber machen willst, dann müßtest Du das Script serverseitig bearbeiten und dann selber an den Client schicken. Dafür brauchst Du keine JS-Kenntnisse. Du brauchst aber die Möglichkeit serverseitig zu programmieren. (PHP, Perl, ...)

    Clientseitig könntest Du z.B. das Script innerhalb eines DIV's einbinden und dann das innerHTML des DIV's bearbeiten.

      
    <DIV ID=x>  
    <script type="text/javascript" charset="UTF-8" src="http://www.***.de/tinc?key=script">  
    </DIV>  
    <script>  
    var d = document.getElementById("x");  
    d.innerHTML = d.innerHTML.replace("Martin Müller", "Martin Meier");  
    </script>  
    
    

    Grüße,
    Steffen.