Claude: RegExp: Beispiel geht mit IE aber nicht mit Firefox

Hallo,

Habe eine kleine Suchfunktion erstellt, die ich auf meiner Homepage schon länger im Einsatz habe. Leider geht diese NUR mit MS IE, aber nicht mit Firefox. Bei Firefox werden keine Einträge gefunden (also Treffer immer 0).
Wahrscheinlich habe ich Fehler bei RegExp.
Hier der Auszug der Funktion:

for (i = 0; i <= anzp; i++) { //jeden Block bzw Array durchsuchen
 ergzw=0; //zurücksetzen für jeden Block
 for (var j = 0; j < suchwortanz; j++) { //für jedes Wort suchen
  suche = new RegExp (suchwort[j],"gi");
  var ergebnis = suche.exec(inhalttxt[i]);
  if(ergebnis != null)
   ergzw++;
 }
 if(ergzw == suchwortanz) { //wenn ergzw = anzahl der Suchwoerter (bei UND) ... alle wörter gefunden
     document.writeln(inhalthtml[i]);
  treffer++;
 } else {
  document.write(".");
 }
}

Erläuterung Variablen:

  • Anzp ist die Anzahl der Blöcke zwischen <P></P> die durchsucht werden
  • inhalttxt wird weiter oben mit document.getElementsByTagName("p")[k].innerText; ermittelt
  • inhalthtml wird mit OuterHtml gefüllt.
  • suchwortanz = Anzahl der Suchwörter, die weiter oben mit Split separiert wurden
  • suchwort(j) enthält das Suchwort (String)

Da ich weiss, dass Firefox das InnerText nicht unterstützt, habe ich das gleiche mit
   var ergebnis = suche.exec(inhalthtml[i]);
(also OuterHtml) versucht. Geht aber auch nicht.

Sieht irgendjemand etwas, dass mit Firefox Probleme macht? ... bin noch Anfänger. Auch der Aufbau der Schleife ist vielleicht für die Profis unter euch etwas laienhaft .... wie gesagt, bin noch Anfänger, und programmiere sonst mit VBA.

Vielen Dank an euch.
Gruss
Claude

  1. Hallo,

    http://de.selfhtml.org/javascript/objekte/all.htm#outer_html
    http://de.selfhtml.org/javascript/objekte/all.htm#inner_text

    Firefox kennt weder outerHTML noch innerText.

    Anstatt innerText kannst du textContent verwenden, die Alternative zu outerHTML hängt von der konkreten Anwendung ab.

    Mathias

    1. Hallo Matthias,

      Vielen Dank,
      ...dann ist mir klar, warum es nicht geht.
      Werde es mit textContent probieren

      mfG
      Claude

    2. Hallo Matthias,

      ...die Alternative zu outerHTML hängt von der konkreten Anwendung ab.
      Mathias

      OK, Für InnerText habe ich TextContent (nur wenn die Variable leer ist)
      Klappt ganz gut.

      Nun habe ich das Problem mit OuterHTML. Kannst du mir ein Tipp geben? Muss ich selber eine Funktion zusammenbasteln, um die ganze Struktur auszulesen?

      Was ich brauche: Wenn die Wörter in InnerText gefunden werden, wird OuterHTML dann im Suchergebnis ausgespuckt. Funktioniert eigentlich wie ein Filter.

      Hier ein Beispiel von solch einem Block:

      <p id="dataCALC000059"><a name="CALC000059"></a>
      <img src="xpunkt03.gif" width="14" height="14" border="0" alt="T I P P - Einträge">
      <s>Anwendung</s>
      <b>CALC.EXE </b>
      Taschenrechner: "." vor "-" Regel nur in der wissensch. Ansicht !
      <i><br>System: Win95 </i>
      <br><u>Quelle: PCWelt 97/06 Seite 278, letzte Aenderung am 18.01.2000</u>
      <br><u>[Original-Text = deutsch]  [englische Übersetzung vorhanden <a href="http://www.cpctipps.de/en/_0a3.htm#CALC000059">EN</a>]  [französische Übersetzung vorhanden <a href="http://www.cpctipps.de/fr/_0a3.htm#CALC000059">FR</a>] </u>
      <u><br>Systemnummer für Rückfragen: CALC000059</u>
      |<a onclick="tipppermail('CALC000059')">Tipp per eMail weiterleiten</a>
      </p>

      Danke für Hinweise und Tipps

      mfg
      Claude

      1. Hallo,

        Habe für meinen Fall eine Lösung gefunden: Mit InnerHTML:

        inhalthtml[k]=document.getElementsByTagName("p")[k].outerHTML;
          if (inhalthtml[k] == null)
         inhalthtml[k]="<P>" + document.getElementsByTagName("p")[k].innerHTML + "</P>";

        Ist vielleicht nicht sehr elegant, aber es klappt. Funktioniert mit MS IE und Firefox

        mfG
        Claude