Hallo,
ich habe folgendes Skript für eine Livesearch geschrieben. In Safari funktioniert es perfekt, nur in Firefox macht es Probleme. Und zwar werden die Tabellenzeilen nicht wieder eingeblendet, wenn ich in dem Textfeld einen Buchstaben der eingegebenen Zeichenkette lösche. Woran kann das liegen?
document.getElementsByTagName("tr")[i].style.display = "marker";
Wo ist die CSS-Eigenschaft display:marker definiert http://www.w3.org/TR/CSS21/visuren.html#display-prop? Du blendest eine Tabellenzeile aus. Um sie wieder einzublenden muss sie display:table-row bekommen.
Allerdings ist es mit JavaScript relativ unkompliziert, die Standard-Eigenschaft wieder herzustellen. Man setzt dazu style.eigenschaft einfach auf einen Leerstring. Im Beispiel:
document.getElementsByTagName("tr")[i].style.display = "";
Weitere Verbesserungsvorschläge:
Warum wendest Du document.getElementsByTagName("tr") so häufig an? Du arbeitest mit der cells-Collection. Die rows-Collection existiert ebenfalls. Du musst also nur vor allen Schleifen die Tabelle in eine Variable nehmen:
var myTable = document.getElementsByTagName("table")[0];
und greifst dann auf die Zeilen mit:
myTable.rows.length
bzw.:
myTable.rows[i]
...
myTable.rows[i].cells[j]
...
myTable.rows[i].style.display = "";
usw. zu.
viele Grüße
Axel