• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Tabellenausgabe funktioniert nicht unter FF

opiWahn

New member
Hallo,

ich habe heute ein etwa 5 Jahre altes JS gefunden, welches ein Freund und ich damals entwickelten - ohne von JS und Spezifikationen die große Ahnung zu haben. Das hat sich leider bis heute nicht geändert!
Beide sind wir nach wie vor in der Javawelt zu Hause und Java ist eben nicht JS.
Ich vermute mal, daß es sich nur eine Kleinigkeit ist, wieso die Ausgabe der Daten (die werden aus einem externen Array gefiltert) im FF nicht angezeigt werden. Im IE funktinoniert das alles problemlos und wie gewünscht.
Ich hoffe der Auschnitt unten reicht und freue mich wenn mir jemand auf die Sprünge hilft.

Gruß opiWahn

Code:
//-----------------------------------------------------------------------------
/** Schreibt die Daten des übergebenen Arrays in die übergebene HTML-Tabelle.
 *  -(Object) tabelle: zu füllendes HTML-Tabellenobjekt.
 *  -(Array) daten: 2-dim-Array. Die erste Zeile (daten[0]) enthält die Spal-
 *   tennamen, die übrigen Zeilen enthalten die Werte.
 */
function fuelleTabelle(doc, daten)
{
  var spalten = daten[0].length;  // Anzahl der Spalten
  var zeilen = daten.length;      // Anzahl der Zeilen mit Werten + 1
  var lz = 0;                     // Anzahl hinzugefügte Leerzeilen
  var liga = daten[0][1];         // Merker für aktuell ausgegebene Liga
  var jahr = daten[0][0];         // Merker für aktuell ausgegebenes Jahr
  var dsMax = 14;                 // Anzahl der max. Zeilen je Seite
  var dsmeldung0 = "Zu Ihrer Abfrage konnten leider keine Daten gefunden werden";
  var dsmeldung1 = "Gefundene Datensätze: ";
  
  tabelle = doc.getElementById('Anzeige'); 
  fehler = doc.getElementById('Anzeige');
  dsm = doc.getElementById('Anzeige');

  // Tabellenihalte löschen.
  while (tabelle.rows.length != 0) tabelle.deleteRow(0);
  if (fehler.rows.length != 0) fehler.deleteRow(0);

  // Fehlerausgabe
 if (zeilen <= 1)
  {
    fehler.insertRow(0);
    fehler.rows[0].bgColor = "#7aa2be";
    fehler.rows[0].insertCell(0);
    fehler.rows[0].cells[0].innerText = (dsmeldung0);
    return;
  }

  // Datensatzmenge
 if (zeilen > 1)
  {
    dsm.insertRow(0);
    dsm.rows[0].bgColor = "#7aa2be";
    dsm.rows[0].insertCell(0);
    dsm.rows[0].cells[0].innerText = (dsmeldung1 + (zeilen-1));
    dsm.rows[0].cells[0].colSpan = 11;
  }


  // Spaltennamen und Werte in die Tabelle schreiben.
  for (var i = 0; i < zeilen; i++)
  {
    // Bei Ligawechsel...
    if (liga != daten[i][1] || jahr != daten[i][0])
    {
      // Den neuen Ligawert merken.
      liga = daten[i][1];
      jahr = daten[i][0];
      tabelle.insertRow(i+lz);
      // Zwischenzeile mit Liga schreiben.
      tabelle.rows[i+lz].bgColor = "#7aa2be";
      tabelle.rows[i+lz].insertCell(0);
      if (liga == "ol")
        tabelle.rows[i+lz].cells[0].innerText = ("Oberliga " + jahr);
      else if (liga == "vl")
        tabelle.rows[i+lz].cells[0].innerText = ("Verbandsliga " + jahr);
      else if (liga == "jg")
        tabelle.rows[i+lz].cells[0].innerText = ("Jugend " + jahr);
      else if (liga == "po")
        tabelle.rows[i+lz].cells[0].innerText = ("SWSV-Pokal " + jahr);
      else if (liga == "da")
        tabelle.rows[i+lz].cells[0].innerText = ("RL Damen " + jahr);
      // Eine Zeile über ALLE Spalten
        tabelle.rows[i+lz].cells[0].colSpan = 11;
      // Leerzeilenzähler erhöhen.
      lz++;
    }
    // die eigentlichen Wertezeilen ausgeben.
    // "i+lz" berücksichtigt die hinzugekommenen Leerzeilen.

    tabelle.insertRow(i+lz);
    if (i == 0)
      tabelle.rows[i].bgColor = "#7aa2be";
    for (var j = 2; j < spalten; j++)
    {
      tabelle.rows[i+lz].insertCell(j-2);
      tabelle.rows[i+lz].cells[j-2].innerText = daten[i][j];
    }
  }
}

//-----------------------------------------------------------------------------
 
@ kkapsner: vielen Dank für den Link - jetzt weiß ich wenigstens, daß ich zuvor auch auf der richtigen Fehlerkonsole war ... man kann ja nie wissen :)
die besagte zeigt mir 2 undeklarierte Variablen an - einmal sogar an einer Stelle wo definitiv keine Variable ist (Zeile 6)?

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<script language="JavaScript" src="ergebnisse.js" type="text/javascript"></script>
<script language="JavaScript" src="options.js" type="text/javascript"></script>
<script language="JavaScript" src="funktionen.js" type="text/javascript"></script>
<html>
<head> // an dieser Stelle wird die Deklaration von arraySuchErg erwartet  // 
<title>ergmenu</title>
</head>
<body background="images/mainbg.gif" bgcolor="lightblue"
      onload="javascript:fuelleCBox(document.auswahl.cBoxLiga, Liga);
              javascript:fuelleCBox(document.auswahl.cBoxSais, Sais);
              javascript:fuelleCBox(document.auswahl.cBoxHeim, Heim);
              javascript:fuelleCBox(document.auswahl.cBoxGast, Gast);">
<center>
<form name="auswahl">
<select name="cBoxLiga" size="1" style="width:110px; height:25px; background-color:#add8e6"></select>
<select name="cBoxSais" size="1" style="width:110px; height:25px; background-color:#add8e6"></select>
<select name="cBoxHeim" size="1" style="width:139px; height:25px; background-color:#add8e6"></select>
<select name="cBoxGast" size="1" style="width:139px; height:25px; background-color:#add8e6"></select>
<input type="button" style="width:38px; height:25px;" value="Go"
  onclick="
  var kriterien =
    'Liga=' + document.auswahl.cBoxLiga.value + ';' +
    'Sais=' + document.auswahl.cBoxSais.value + ';' +
    'Heim=' + document.auswahl.cBoxHeim.value + ';' +
    'Gast=' + document.auswahl.cBoxGast.value;
   arraySuchErg = sucheDaten(kriterien, arrayAllePlaz);
   fuelleTabelle(parent.haupt.document, arraySuchErg);"></>
</form>
</center>

<script language="JavaScript" type="text/javascript">
arrayAllePlaz = erstelleArray(werte); // hier wird sich über arrayAllePlaz beschwert //
</script>

</body>
</html>

Der Fehler in 33 wird gleich beim aufrufen der Seite ausgegeben, der ominöse in 6 nach "onklick"
Wie gesacht, ich bin nicht wirklich die große Programmierleuchte.

Grüße
opiWahn
 
Im onload musst du das Protokoll javascript weglassen. Werden die JS-Dateien korrekt eingebunden? Welche Variablen sollen undeklarierte sein? Gibt es ein Testlink?
 
Moin ;-)

zum besseren Verständnis, sollte es nötig sein, hab ich das damalige Werk mal auf nachfolgender URL hinterlegt: http://it-transfer.net/project

Zu diesem Zeitpunkt war Webspace mit PHP und MySQL - nur fürs Hobby - noch recht teuer.
Da ich Mitte 2005 meine Gummihose an den Nagel hing, hab ich dieses bislang nie veröffentlichte Projekt nicht mehr weiter verfolgt. Beim "Aufräumen" fiel es mir heute vor die Finger und ich dachte mir, dass es im Ansatz flexibel genug ist um noch andere Dinge damit anzustellen. Vorausgesetzt es läuft auf allen Browsern gleichermaßen - auch wenn jetzt auch noch das CSS rumzickt (soll eh nicht in dem Layout und Korsett (Frameset) bleiben).

Na dann - gut Nacht :)

opiWahn
 
Werden die JS-Dateien korrekt eingebunden? Welche Variablen sollen undeklarierte sein? Gibt es ein Testlink?
- ich denke ja
- hatte ich bei der Fehlerbeschreibung vergessen: in 33 geht es um arrayAllePlaz in 6(?) um arraySuchErg
- steht zur Ansicht seit gestern online

Ich kann mich dunkel erinneren, daß ein ehemaliger Kollege mir vor ein paar Jahren erzählte, daß es wohl was mit "innerText" zu tun hat und an ein paar Stellen ein appendChild o.ä. eingefügt werden muß. Er hatte es in 5 min. hingebogen. Leider verfüge ich aber nicht mehr über den modifizierten Code und habe auch keinen Kontakt mehr dahin.
 
Der FF kann kein innerText (seltsam, dass er bei mir keinen Fehler wirft...) - statt dessen muss du mit document.createTextNode eine Textnode erstellen und an der entsprechenden Stelle mit appendChild einfügen (wie's dein Bekannter auch schon gemacht hat - hättest auch früher darauf hinweisen können).
 
Der FF kann kein innerText (seltsam, dass er bei mir keinen Fehler wirft...)
Warum sollte er? Es ist einfach eine Eigenschaft, du kannst ja im Prinzip jedem Objekt jede beliebige Eigenschaft geben (bis auf wenige Ausnahmen).

Im gegensatz zu innerHTML hat aber innerText keinerlei Wirkung. Der Einfachheit halber kann man innerText auch durch innerHTML ersetzen.
 
Ich dachte, einmal wegen so etwas eine Warnung bekommen zu haben (so wie bei der Verwendung von document.all)... und andererseits hat er ja gesagt, dass er im FF Fehlermeldungen bekommt.

Aber natürlich hast du recht - ein Fehler ist das nicht.
 
Naja, die Beschreibung der Fehlermeldung war sehr wage. (Ein Tipp an opiWahn: Du kannst auf die Fehlermeldung in der Konsole klicken, dann bekommst [meistens] du die konkrete Stelle angezeigt)
 
Hallo,

zunächst einmal vielen Dank für euere rege Anteilnahme und Ratschläge. Auch wenn sich vermutlich dem Einen oder Anderen die Nackenhaare stellen und ich mir das nächste Problem ins "Boot" hole habe ich mich der Einfachheit halber für die innerHTML Version entschieden. Ging recht flott (2 min) und es Funktioniert wie gewünscht. Mit dem Thema "createTextNode" und "appendChild" werd ich mich dennoch mal auseinandersetzen (müssen).

Nochmals vielen Dank

opiWahn

Dieser Thread kann geschlossen werden - der nächste, an anderer Stelle ist schon angedacht (die Tabellenausgabe ggf. auf mehrere Seiten verteilen)
 
Zurück
Oben