Computerhilfen.de Logo
Forum
Tipps
News
Frage stellen

Problem mit JavaScript

Hi!

Ich wollte nun, einen Konverter machen, der einen vulkanischen Text, in IPA konvertiert, was die Aussprache sagen soll.

Bevor ich aber losgelegt hatte, habe ich noch geprüft, ob das Prinzip funktioniert, und machte mir einen Beispiel-Code.

Er sieht so aus:

Ich erstellte eine Datei Namens vulcaninipa.js:

// Diese Datei ist urheberrechtlich geschützt
// heruntergeladen von
// http://www.beispiel.de/

M = {
 "test": ")",
 "beispiel": "*"
}

Außerdem eine HTML-Datei:
<html>
  <head>
<title>VULCAN - IPA Konverter V.1.0</title>
    <script src="vulcaninipa.js"></script>
    <script type="text/javascript">
      for (k in M) {
        k2 = k.replace(/&uuml;/g, 'ü')
        M[k2] = M[k]
      }

      function trim(s) {
        return s.replace(/^\s*/, '').replace(/\s*$/, '');
      }

      function insert(input, s) {
        if (document.selection) {
          input.focus();
          document.selection.createRange().text = s;
        } else if (input.selectionStart || input.selectionStart == '0') {
          start = input.selectionStart;
          end = input.selectionEnd;
          input.value = input.value.substring(0, start) + s + input.value.substring(end, input.value.length);
        } else {
          input.value += s;
        }
        input.focus();
      }

      function update() {
        vulcan = document.getElementById("vulcan").value;
        vulcan = vulcan.replace(/([1-4])/g,  '$1 ').split(/\s+/);
        ipa = '';
        for (i in vulcan) {
          pchar = (vulcan[i]);
          if (pchar) {
            c = M[pchar];
            if (c) {
              ipa += c.replace(/([^;]+;)/, '<b>$1</b>');
            } else {
              ipa += '<b>' + vulcan[i] + '</b>';
            }
          }
        }
        ipa_element = document.getElementById("ipa");
        ipa_element.innerHTML = ipa;
      }
    </script>
  </head>
      <div class=posts>
       
    <h1>VULCAN - IPA Konverter V.1.0</h1>
    <h2>Vulkanisch:</h2>

    <form onsubmit="update(); return false;">
      <input id=vulcan onkeyup="update()">
    </form>

    <h2>IPA:</h2>
    <div id=ipa>
      <No Script ([url=http://www.computerhilfen.de/computerhilfen-netiquette.html#werbeblocker][b]Bitte beachten: Unsere Regeln zu Werbeblockern![/b][/url])>
      Fehler: Sie brauchen einen JavaScript fähigen Browser.
      </No Script ([url=http://www.computerhilfen.de/computerhilfen-netiquette.html#werbeblocker][b]Bitte beachten: Unsere Regeln zu Werbeblockern![/b][/url])>
    </div>
  </body>
</html>

Und nun funktioniert auch alles. Aber das Problem ist folgendes:

Wenn ich die Silbe "test" (ohne "") eingebe, wird sie durch das Zeichen ")" ersetzt (so wie ich es auch in der Datei vulcaninipa.js festgelegt habe); wenn ich die Silbe aber 2 oder mehrmals ungetrennt eingebe (z.B. "testtest"), dann wird überhaupt nichts ersetzt.

Die Silbe wird nur 2 mal, ersetzt, wenn ich sie getrennt mit Leerzeichen eingebe (z.B. "test test").

Ich möchte aber, das man solche Silben zusammengesetzt schreiben kann, und diese trotzdem einzeln ersetzt werden (mit ungetrennter Ausgabe).

Also das wenn ich z.B. "testtest" eingebe, dabei "))" rauskommt.

Hat da jemand eine Idee, wie ich das machen könnte?

Antworten zu Problem mit JavaScript:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Hallo!

Mach doch einfach zwei getrennte Arrays für Vulkanisch und IPA.

vulkanisch = [
  "test",
  "beispiel"
];

ipa = [
  ")",
  "*"
];

...und dann ersetzt du einfach stur der reihe nach:

function update() {
        vulcan = document.getElementById("vulcan").value;

for (i=0; i<ipa.length; i++) {
          while (vulcan.indexOf(vulkanisch[i]) >= 0) {
            vulcan = vulcan.replace(vulkanisch[i], ipa[i]);
          }
        }

        ipa_element = document.getElementById("ipa");
        ipa_element.innerHTML = vulcan;
      }

« Login BereichOnmouseover »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Hypertext
Hypertext ( zu Deutsch: Übertext) ein ein von dem Informatiker Theodore L. Nelson in den sechziger Jahren geprägter Begriff für Text, der dreidimensional g...

Textur
Unter einer Textur versteht man eine Oberflächenstrukur, die ein bestimmtes Material simuliert, wie Holz, Tapete oder Metall. Bei der 3D-Computeranimation bezeichnet...

Generations-Prinzip
Das Generations-Prinzip wird auch als das "Opa-Vater-Sohn-Prinzip" bezeichnet. Dieses Rotationsschema zur Speicherung von Daten ist eine überschreibende Datensicheru...