Hintergrundfarbe von Tabellen inerhalb eines ILAYER
Volker
- dhtml
Wenn ich die Hintergrundfarbe eines ILAYER setze vererbt sich diese
nicht auf Tabellenhintergründe innerhalb dieses Layers. Da ich die
Farbe mit JavaScript dynamisch setzen will müsste ich alle Zelleninhalte
zu Layern machen und diese ebenfalls ändern, was ich ziemlich bescheuert finde. Weiß jemand was besseres?
Volker.
hi Volker,
Da ich die
Farbe mit JavaScript dynamisch setzen will
Nö, das willst du nicht. Du willst es mit CSS machen. Da kannst du auch für die Tabelle bzw. für Tabellenzellen Farben vorgeben, wenns sein muß, in verschiednen Klassen, und schon bist du alle Sorgen los.
Wenn du es unbedingt mit Javascript machen willst, geht auch das, indem du in einer Funktion einfach die CSS-Formatierungen einträgst.
Christoph S.
hi Volker,
Da ich die
Farbe mit JavaScript dynamisch setzen will
Nö, das willst du nicht. Du willst es mit CSS machen. Da kannst du auch für die Tabelle bzw. für Tabellenzellen Farben vorgeben, wenns sein muß, in verschiednen Klassen, und schon bist du alle Sorgen los.
Mit "dynamisch" meine ich auf ein onclick-event zu reagieren. Damit kann ich das ja wohl nur über eine Scriptfunktion machen. Die CSS Definitionen beeinhalten doch selbst keine Funktionen bzw. Methoden oder hab ich da was falsch verstanden?
Ich habe unter anderem folgendes ohne Erfolg probiert:
function select(i) {
document.layers[i].document.tags.table.backgroundcolor="red";
}
bei Aufruf dieser Funktion wird der Wert gesetzt (kann ihn auch wieder auslesen). Leider veränert sich aber auf der Seite nichts.
Volker
hi Volker,
Mit "dynamisch" meine ich auf ein onclick-event zu reagieren. Damit kann ich das ja wohl nur über eine Scriptfunktion machen.
Richtig, allerdings hat das nix mit "dynamisch" zu tun.
Die CSS Definitionen beeinhalten doch selbst keine Funktionen bzw. Methoden oder hab ich da was falsch verstanden?
Nein. Hier (noch) nicht...
Ich habe unter anderem folgendes ohne Erfolg probiert:
function select(i) {
document.layers[i].document.tags.table.backgroundcolor="red";
}
... aber hier. Ein Unterobjekt "tags" existiert ganz einfach nicht - siehe http://selfhtml.teamone.de/javascript/objekte/htmlelemente.htm
Mit einem EventHandler wie onMouseOver o. ä. kannst du zwar eine Javascript-Funktion aufrufen, die zum Beispiel einen bis dahin verborgenen Layer sichtbar macht, aber Hintergrundfarben kannst du auf _diese Weise_ nicht bestimmen.
bei Aufruf dieser Funktion wird der Wert gesetzt
"eigentlich" müßtest du eine Fehlermeldung in deinem Test-Browser erhalten, daß das Script fehlerhaft ist.
Mir scheint auch die Layer-Konstruktion zweifelhaft, weil du "document.layers" einsetzt, und das sollte nun _wirklich_ langsam in der Mottenkiste verschwinden. Mach es mit getElementById und nimm DIV's, dazu gibts im Archiv viele, viele Threads ... Oder schreib deinen Code etwas vollständiger her oder gib eine URL an, so daß man sich deine bisherige Arbeit mal genauer anschauen und dir genauer sagen kann, wo es "klemmt".
Christoph S.
Hallo Christoph,
Erstmal Danke für deine Bemühungen, aber ich habe das Problem inzwischen gelöst. Hier nur noch ein paar Anmerkungen um viele Missverständnisse auszuräumen:
1. Das "D" in DHTML heißt "Dynamic", insofern hat das ganze sehr wohl was mit dynamisch zu tun.
2. Natürlich verwende ich die ILAYER nur für Netscape4x. Für alle anderen Browser nehme ich DIV und getElementByID.
3. Das "tags" Objekt existiert bei Netscape4x Javascript sehr wohl. Schau dir mal die URL http://www.oreilly.com/catalog/jscript2/examples/js_nav.html an und such nach "tags".
4. Und hier noch die Beispiel URL mit meinem jetzt funktionierenden Code (Der Fehler lag schlicht und einfach in der Hintergrundfarbe einer darüberliegenden Tabellenstruktur):
http://www.formfabrik.com/test/bilderliste.php?KID=900007
P.S Letztendlich hat mich das zusammenstellen des Beispiels auf den Fehler gebracht, insofern wars ne gewinnbringende Diskussion
Gruß
Volker