7.2k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von halfstone Profi (18.1k Punkte)
Hallo liebe JavaScript Profis,

ich brauche für unsere Webseite ein JavaScript mit folgender Funktion:

Eine Webseite hat in einem Formular zwei Texteingabefelder.
Im ersten werden Wörter eingetragen, in jede Zeile eines, Beispiel:

-------------------
Fabian
Hugo
Susi
Markus
-------------------

Wenn ich jetzt im nächsten Texteingabefeld einen Text schreibe, dann soll am besten oben angezeigt werden welche dieser Worte ich schon im Text benutzt habe und wie oft.

------------------
Fabian hat sich heute in die Sonne gelegt und dabei Susi getroffen.
Beide sind dann zusammen Eis essen gegangen und Susi hat dabei noch ihren Hund mitgenommen.
------------------

Dann soll im oberen Textfenster angezeigt werden wie oft die jeweiligen Wörter im unteren Text benutzt wurden also so:

-------------------
Fabian 1
Hugo
Susi 2
Markus
-------------------

Die Aktualisierung würde bei jedem Punkt am Ende eines Satzes reichen, kann aber auch bei jedem Space passieren.

Richtig super wäre auch noch eine zweite Zahl hinter der Anzahl nämlich die Wortdichte die sich aus der Gesamtzahl der Wörter durch die Anzahl der Vorkommen eines Wortes ergibt.

Ich hoffe ich habe mich verständlich ausgedrückt.

Viele Grüße und ein sonniges Wochenende wünsche ich euch

Fabian

38 Antworten

0 Punkte
Beantwortet von
Hi Friedel

Ich sprach von Opera und meinte Opera, weil mein Testlauf nur im Opera funktionierte und die Opera-Fehlerkonsole mir keine weiteren Fehler anzeigte während es im Firefox nicht funktionierte, weil der Firefox mit der Eventhändlerunterobjektzuweisung nicht zurechtkommt und deswegen in der Fehlerkonsole des Firefox steht, dass der Firefox das nicht mag.

IE benutze ich (für's JavaScript-Testen) nicht!

Ist damit deine Browser-Frage geklärt?
0 Punkte
Beantwortet von friedel Experte (3.3k Punkte)
@gast42: Mich interessiert nicht, welche Browser du benutzt. Die Frage ging an Fabian. Da sein Script nicht in allen Browsern funktioniert, ist es einfacher etwas daran zu verändern, wenn an weiß in welchem Browser das Ergebnis funktionieren soll.
0 Punkte
Beantwortet von friedel Experte (3.3k Punkte)
@Fabian: Zu deinem anderen Ansatz. Offensichtlich verstehe ich nicht, was du überhaupt machen willst. Ich dachte, es soll aus jeder Zeile nur dann etwas herausgefiltert werden, wenn die Zeile mit einer Zahl, einem Prozentzeichen und dann einem Leerzeichen beginnt. Meine Scripterweiterung sucht nach eine Folge von beliebig vielen Ziffern, die Am Zeilenanfang stehen, dann einem Prozentzeichen und dann einem Leerzeichen. Wenn das am Anfang einer Zeile steht, wird es entfernt. Dabei bleibt es in der Zeile stehen, wird aber nicht als Teil des Suchbegriffes übernommen. Wenn die Zeile nicht mit so einer Zeichenfolge beginnt, macht meine Erweiterung nichts. Bei Eingabe von
[list[*]Alle -- wird nach "alle" gesucht.
[*]alle meine -- wird nach "alle meine" gesucht.
[*]2% Entchen -- wird nach "entchen" gesucht.
[*]123456% schwimmen -- wird nach "schwimmen" gesucht.
[*]12% auf dem See -- wird nach "auf dem see" gesucht.[/list]
Dabei bleiben die Begriffe im Eingabefeld aber unverändert.

Natürlich kann man das auch so machen, dass immer die ersten 4 Zeichen entfernt oder ignoriert werden. Aber dann sind die Ergebnisse der Suche natürlich ganz anders.

Eine bedeutende Vereinfachung wäre es, wenn das Event-Object nicht benutzt würde. Jeder Browser geht anders damit um. Statt dessen könnte man z.B. einen Button oder Link einbauen, der das Script startet. Oder man könnte es mit einem Doppelklick auf eines der Formularfelder starten. Sowas würde dann in allen (geeigneten) Browsern funktionieren.
0 Punkte
Beantwortet von halfstone Profi (18.1k Punkte)
Hi Friedel,

Alle -- wird nach "alle" gesucht.
alle meine -- wird nach "alle meine" gesucht.
2% Entchen -- wird nach "entchen" gesucht.
123456% schwimmen -- wird nach "schwimmen" gesucht.
12% auf dem See -- wird nach "auf dem see" gesucht.

Genau so soll es sein, bei mir funktioniert dein Code leider nicht, also ich bekomme keine Ergebnisse besser gesagt immer nur 0 oder 0% für alle Begriffe egal was ich schreibe.

Bin gespannt ob wir das noch hinbekommen.

Gruß Fabian
0 Punkte
Beantwortet von halfstone Profi (18.1k Punkte)
so ich habs noch mal durchgetestet, er findet die Wörter oder Phrasen nicht, wenn davor ein xx% steht er sucht nur exact die Sachen, die auch in der Liste stehen ohne die xx% davor rauszulöschen.

Gruß Fabian
0 Punkte
Beantwortet von friedel Experte (3.3k Punkte)
Welchen Browser benutzt du?

Ich habe jetzt festgestellt, dass mein Script auch im IE nicht immer funktioniert. Komisch. Manchmal geht's manchmal nicht. Muss ich mir mal genauer ansehen.
0 Punkte
Beantwortet von friedel Experte (3.3k Punkte)
Grr. Das kommt davon, wenn man mit mehreren Codeschnipseln testet und dann das falsche zusammen kopiert. In meiner Erweiterung fehlt die Entfernung des Leerzeichens. Du musst die Zeile
matchPhrases[i] = matchPhrases[i].replace(/^\d+%/, "");
durch
matchPhrases[i] = matchPhrases[i].replace(/^\d+%\s/, "");
ersetzen, dann geht es in allen Browsern, in denen es auch ohne die Erweiterung funktioniert. Wenn man zusätzlich den Ballast mit dem Event-Object entfernt, funktioniert es in allen geeigneten Browsern.
0 Punkte
Beantwortet von friedel Experte (3.3k Punkte)
Nach dem "\s" kannst du noch ein "+" einbauen. Dann klappt es auch, wenn jemand zwischen der Prozentzahl und dem Suchbegriff mal 2 (oder mehr) Leerzeichen eingibt. Wenn du statt dem "+" ein "*" einbaust, geht es auch ohne Leerzeichen.
...