Aljoscha: Funktionsparameter und Anführungszeichen

Hallo,
ich bin PHP-Programmierer und muss jetzt eine JavaScript-Funktion nutzen, um mit einem Button in ein Textfeld einen bestimmten Text einzufügen (a la PHPBB usw.).
Die Funktion funktioniert mit normalen Texten auch wunderbar.
Jetzt soll aber folgender Text eingefügt werden:
<img src=" ... " alt= " ... ">
und JavaScript kommt mit den Anführungszeichen nicht klar.
Die Parameter der Funktion werden in Hochkommata übergeben ('). Damit scheint er dann auch seine Probleme zu haben.
Hier die JavaScript-Funktion:
  <script type="text/javascript">
  <!--
  function insert(aTag, eTag) {
     var input = document.forms['formular'].elements['story'];
     input.focus();
     /* für Internet Explorer */
      if(typeof document.selection != 'undefined') {
        /* Einfügen des Formatierungscodes */
        var range = document.selection.createRange();
        var insText = range.text;
        range.text = aTag + insText + eTag;
        /* Anpassen der Cursorposition */
        range = document.selection.createRange();
        if (insText.length == 0) {
          range.move('character', -eTag.length);
        } else {
          range.moveStart('character', aTag.length + insText.length + eTag.length);
        }
        range.select();
      }
     /* für neuere auf Gecko basierende Browser */
      else if(typeof input.selectionStart != 'undefined')
      {
        /* Einfügen des Formatierungscodes */
        var start = input.selectionStart;
        var end = input.selectionEnd;
        var insText = input.value.substring(start, end);
        input.value = input.value.substr(0, start) + aTag + insText + eTag + input.value.substr(end);
        /* Anpassen der Cursorposition */
        var pos;
         if (insText.length == 0) {
           pos = start + aTag.length;
         } else {
           pos = start + aTag.length + insText.length + eTag.length;
         }
         input.selectionStart = pos;
         input.selectionEnd = pos;
      }
     /* für die übrigen Browser */
      else
      {
        /* Abfrage der Einfügeposition */
        var pos;
        var re = new RegExp('[1]{0,3}$');
        while(!re.test(pos)) {
          pos = prompt("Einfügen an Position (0.." + input.value.length + "):", "0");
        }
        if(pos > input.value.length) {
          pos = input.value.length;
        }
        /* Einfügen des Formatierungscodes */
        var insText = prompt("Bitte geben Sie den zu formatierenden Text ein:");
        input.value = input.value.substr(0, pos) + aTag + insText + eTag + input.value.substr(pos);
      }
  }
  //-->
 </script>
Und hier der HTML-Tag dazu:
<input type="button" value="img" onClick="insert('<img src="bla.jpg"','>')">
Nach dem Button im Formular spuckt er mir dann diesen Text noch aus:
')">
Zeigt ja, dass da was nicht stimmt.
Komme echt nicht weiter. Wäre echt gut, wenn ihr mir helfen könntet.
Mit bestem Dank im Voraus
Aljoscha


  1. 0-9 ↩︎

  1. Moin!

    <input type="button" value="img" onClick="insert('<img src="bla.jpg"','>')">

    -> <input type="button" value="img" onClick="insert('<img src="bla.jpg"','>')">
    -- Skeeve

    1. Moin!

      <input type="button" value="img" onClick="insert('<img src="bla.jpg"','>')">
      -> <input type="button" value="img" onClick="insert('<img src="bla.jpg"','>')">
      -- Skeeve

      Danke für die schnelle Antwort nur leider ist der Fehler immer noch da! Er fügt immer noch nicht den Text ein und nach dem Button steht immer noch ')">
      Dachte, ick wär zu blöd und hab deshalb mal schnell ne neue html-datei erstellt und deinen Quelltext per Copy & Paste eingefügt. Führt aber zum selben Ergebnis.
      Ich bin jetzt wirklich am Verzweifeln.
      Najut, vielleicht fällt euch/dir ja noch was ein. Vielen vielen Dank
      Aljoscha

      1. Hallo,

        <input type="button" value="img" onClick="insert('<img src="bla.jpg"','>')">


                                                                                       ╚═☻

        Danke für die schnelle Antwort nur leider ist der Fehler immer noch da! Er fügt immer noch nicht den Text ein und nach dem Button steht immer noch ')">

        ja, das ist mir auch auf den zweiten Blick klar - und sollte dir auch klar sein, wenn du dir die Zeile mal genau ansiehst. Denn beim '>', also genau an der von mir markierten Stelle, wird für den HTML-Parser das input-Tag geschlossen.
        Du begehst hier Sünde, indem du die reservierten Zeichen '<' und '>' direkt im Quelltext notierst, anstatt sie mit &lt; und &gt; zu umschreiben!

        Schönes Wochenende noch,
         Martin

        --
        Die Zeit, die man zur Fertigstellung eines Projekts wirklich braucht, ist immer mindestens doppelt so lang wie geplant.
        Wurde dieser Umstand bei der Planung bereits berücksichtigt, gilt das Prinzip der Rekursion.
        1. Alles klaro, danke dir, jetzt funktioniert's. *freu*