Christoph: indexOf

Hallo,

ich machs kurz:

Was ist denn an folgendem Code falsch??

<script type="text/javascript">
function click() {
if (document.getElementById('er').value.indexOf('t') == -1) {
alert('t vorhanden');
}

else {
  var neuertext = document.createTextNode("juhu!");
  document.getElementById("er").replaceChild(neuertext, document.getElementById("er").firstChild);

}
}
</script>
<table><tbody>
<tr><td name="er" id="er">text</td></tr></tbody></table>

<p><a href="javascript:click()">click!</a></p>

Fehler: document.getElementById("er").value has no properties

danke schon einmal,
Christoph

  1. Yerf!

    Fehler: document.getElementById("er").value has no properties

    Eine <td> hat keinen Value.

    Benutz entweder .firstChild.data oder .innerHTML

    Gruß,

    Harlequin

    --
    <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
    1. Benutz entweder .firstChild.data oder .innerHTML

      Ok, danke...
      habs jetzt statt ner Tabelle mit einer Textarea gemacht.

      Allerdings habe ich jetzt noch ein anderes Problem:
      Code:

      <script type="text/javascript">
      function click() {

      if (document.getElementById('htmlcode2').innerHTML.indexOf('ä') != -1) {
      var neuertext = document.createTextNode("&auml;");
      document.getElementById("htmlcode2").replaceChild(neuertext, document.getElementById("htmlcode2").firstChild);
      }

      }
      </script>
      <textarea id="htmlcode2">hgfdsaäasdfgh</textarea>
      <p><a href="javascript:click()">click!</a></p>

      Wenn ich auf das "click!" klicke, dann sollte nur das "ä" mit "&auml;" ersetzt werden... es wird aber immer der ganze Salat, der in dem Textfeld steht ersetzt!
      Was muss ich umprogrammieren, damit der restliche "Salat" stehen bleibt und nur das "ä" ersetzt wird??

      danke,
      christoph

      1. Yerf!

        habs jetzt statt ner Tabelle mit einer Textarea gemacht.

        Das ist jetzt irgendwie doppelt gemoppelt... .innerHTML und .childNode wäre auch mit der Tabelle gegangen und die Textarea kennt .value

        Wenn ich auf das "click!" klicke, dann sollte nur das "ä" mit "&auml;" ersetzt werden... es wird aber immer der ganze Salat, der in dem Textfeld steht ersetzt!

        Klar, die ChildNode die ausgetauscht wird enthält den kompletten Text, die neu erzeugte nur das "&auml;".

        Was muss ich umprogrammieren, damit der restliche "Salat" stehen bleibt und nur das "ä" ersetzt wird??

        Ich denke, am besten wendest du replace auf .innerHTML oder .value an.

        Wobei mir noch nicht ganz klar ist, was diese Ersetzung bringen soll und warscheinlich (zumindest bei innerHTML) musst du das "ä" durch "&amp;auml;" ersetzen.

        Gruß,

        Harlequin

        --
        <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
        1. Was muss ich umprogrammieren, damit der restliche "Salat" stehen bleibt und nur das "ä" ersetzt wird??

          Ich denke, am besten wendest du replace auf .innerHTML oder .value an.

          Und wie geht das? Habe jetzt ein wenig rumprobiert. Komme aber nicht drauf :(

          Code:

          <script type="text/javascript">
          function click() {

          if (document.getElementById('htmlcode2').value.indexOf('ä') != -1) {
          var neuertext = document.createTextNode("&auml;");
          document.getElementById("htmlcode2").replaceChild(neuertext, document.getElementById("htmlcode2").firstChild);
          }
          /* [Hier stehen noch weitere Umlaute] */
          }
          </script>
          <textarea id="htmlcode2">hgfdsaäasdfgh</textarea>
          <p><a href="javascript:click()">click!</a></p>

          Könntest du mir das freundlicherweise umprogrammieren??
          Wäre wirklich sehr nett!!

          Danke,
          Christoph

          1. Yerf!

            Und wie geht das? Habe jetzt ein wenig rumprobiert. Komme aber nicht drauf :(

            Der Code sieht jetzt aber nicht direkt danach aus...

            Ok, ein paar Tips noch:

            var box = document.getElementById('htmlcode2'); //damits kürzer wird

            Wir wollen den value der Box ändern und der ist ein String, also:

            box.value = box.value.replace(/ä/g,"&auml;");

            Wegen der "komischen" Schreibweise: siehe http://de.selfhtml.org/javascript/objekte/string.htm#replace und dem Link auf die RegExp

            Gruß,

            Harlequin

            --
            <!--[if IE]>This page is best viewed with a webbrowser. Get one today!<![endif]-->
            1. Vielen Dank, dass du mir so hilfst!!

              Habe jetzt ein wenig rumprobiert. Komme aber nicht drauf :(

              Der Code sieht jetzt aber nicht direkt danach aus...

              Habe eine Weile rumprobiert und als es dann nicht geklappt hat, habe ich den ursprünglichen Code gepostet.

              Danke für den Code... es klappt, aber leider nur lokal, weil wenn ich die Datei hochlade, schaut der Code so aus:
              » box.value = box.value.replace(/�/g,"&auml;");
              Und somit wird das "ä" natürlich nicht ersetzt :(

              Wie muss ich das "ä" denn da schreiben, dass es nicht zum "?" wird?
              Hätte es ja schon so ausprobiert, funktioniert aber leider auch nicht:
              » box.value = box.value.replace(/document.getElementById('ae').value/g,"&auml;");

              ... wobei das input-Feld "ae" unsichtbar ist!

              Hast du da noch einen Tipp für mich ??

              Danke schon einmal,
              Christoph ;-)

              1. Hey,

                sorry für den Post... habs jetzt eh gefunden: http://aktuell.de.selfhtml.org/artikel/javascript/utf8b64/utf8.htm

                Vorher habe ich irgendwie nicht den richtigen Suchbegriff parat gehabt...