Loesung fuer NS gesucht
Norbert Pfeiffer
- javascript
Hallo,
in einer HTML-Tabelle habe ich unter anderem folgenden Tag stehen:
<tr><td ID='TM' style="background-color:aqua;">14:00</div></td>
Nun kann ich den Hintergrund per JavaScript aendern:
document.all['TM'].style.backgroundColor = farbe;
Anwendung:
http://www.merseburg-querfurt.de/kultur/museum/merseburg/museumstag.html
Dies funktioniert auch wunderbar, jedoch nur im IE ... :-((
FRAGE:
Kennt jemand eine Methode, wie ich das auch im NS realisieren kann ?
Das waere echt super...
Beste Gruesse
Norbert
Hallo Norbert,
da du eh auf 4er-Level programmierst, kannst du die Tabelle auch gleich rausschmeissen und stattdessen mit positionierten Elementen arbeiten, zumindest, wenn es keine riesige Datentabelle ist, sondern eine layout-tragende Tabelle mit ein paar Zellen. Stattdessen definierst du dann einen Bereich mit <div style="position:absolut; top:???px; left:???px; width:???px; background-color:aqua" id="MSName" name="NSName" bgcolor="aqua">...</div> - tja, und dann brauchst du noch ein wenig DHTML, das beide Browser verstehen, so wie etwa in <../../tfca.htm>.
viele Gruesse
Stefan Muenz
Hallo Norbert,
da du eh auf 4er-Level programmierst, kannst du die Tabelle auch gleich rausschmeissen und stattdessen mit positionierten Elementen arbeiten, zumindest, wenn es keine riesige Datentabelle ist, sondern eine layout-tragende Tabelle mit ein paar Zellen.
nun mal langsam:
Gruss Norbert
Hallo,
zuerst mal:
Wenn es auf aeltere Browser nicht ankommt, dann ist natuerlich Stefans Vorschlag bestimmt das Nachdenken wert.
Wenn die auch noch mitspielen sollen, dann kann man auch aus Deiner Idee, Norbert, was machen.
Allerdings gibt es bestimmt ein paar Tuecken dabei - kommen weiter unten.
Das Prinzip, sprich, die Theorie, ist zuerst mal noch recht einfach.
<tr><td ID='TM' style="background-color:aqua;">14:00</div></td>
Hm, da steckt schon der Ansatz drin.
Hast Du mal <div> drin gehabt und dann wieder rausgeworfen? Sieht mir so aus, </div> ist noch uebrig.
Probier mal sowas (in etwa):
<STYLE>
#TM0,#TM1,#TM2,#TM3,#TM4,#TM5,#TM6,#TM7
{
position : relative;
border-style : none;
border-width : 1px;
layer-background-color : Aqua;
width : 100pt;
}
</STYLE>
evtl. noch eine height-Angabe dazu.
Die Tabellenzellen dann passend:
<TD><DIV ID='TM0'>...</DIV</TD>
...
Im Script (sind die Passagen aus Deinem, Norbert, Original hier:http://www.merseburg-querfurt.de/kultur/museum/merseburg/museumstag.html):
var NS4 = (document.layers) ? 1 : 0;
var IE4 = (document.all) ? 1 : 0;
var fld = new Array("TM0","TM1","TM2","TM3","TM4","TM5","TM6","TM7");
var fX = fld.length;
frB = "aqua";
...
for (i=0; i<fX; i++)
{
if (IE4)
document.all[fld[i]].style.backgroundColor = frB;
if (NS4)
document.layers[fld[i]].document.bgColor = frB;
...
Das sollte zunaechts mal mit beiden 4ern funktionieren, bei anderen wenigstens noch die Tabelle zeigen.
Und jetzt kommts:
Das sieht nicht mehr ganz so aus wie die Originalfassung.
MSIE zeigt vor Start des Scripts gar keine Hintergrundfarbe, danach ganz schoene Zwischenraeume.
Das mit dem Anfang koennte man noch halbwegs hinkriegen, indem man zuerst mal ganz schnell alle Hintergruende setzt.
Gleich im CSS-Teil geht nicht, weil Navi layer-background-color ersetzen kann, bei background-color aber nicht will.
Fuer die Groesse der Flaechen geht noch was in den CSS-Angaben.
Unterschiedliche Darstellung wird man aber nicht ganz vermeiden.
Bleibt noch die Positionierung der Schrift. An der muesste man auch noch ein bisschen rumbasteln. Keine Ahnung, mit welchem Erfolg. Notfalls Postionierung in den Tabellenzellen daneben anpassen.
Fazit: Ganz schoen aufwendig, aber so machbar, dass beide was "Ordentliches" zeigen.
Wenn Du Dich fuer diese Variante entscheidest: Viel Vergnuegen <g>
Ich bin trotzdem ueberzeugt, Du kriegst das hin.
Christine
Hallo Christine,
Dein Vertauen in mich ist wirklich toll, danke :-)
Aber wo Dur Recht hast, hast Du Recht ...
Nun brauche ich nur noch einen Chef, der das auch so sieht.
Das mit den Broqwser-Versionen ist echt zum 'ko****' !!!
Ich habe folgendes probiert:
msg = "backgroundColor =\t" + document.layers[fld[i]].backgroundColor + "\n";
msg += "document.bgColor =\t" + document.layers[fld[i]].document.bgColor + "\n";
alert(msg);
Das bringt
backgroundColor = aqua backgroundColor = #00ffff
Doch setzen kann man das NICHT etwa beides, sondern nur 'document.bgColor' !
Darauf muss erst mal jemand kommen. Bei NS gibt es viele Eigenschaften,
die sich zur Laufzeit nicht aendern lassen (z.B. img.hight u. img.width) :-(
Warum machen die so einen Unfug, frage ich mich.
Also, es geht...
http://www.merseburg-querfurt.de/kultur/museum/merseburg/museumstag.html
und Meiner Meinung nach, sehen die schmalen Streifen auch besser aus.
beste Gruesse
Norbert