Norbert Pfeiffer: Loesung fuer NS gesucht

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...

  • erstens bin ich gegen 'Ausgrenzung'.
  • zweitens trifft es immer die Falschen.

Beste Gruesse

Norbert

  1. 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

    1. 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:

      • ich programmiere fuer User  :-)
          d.h. wer mit einer 3-er Version surft, sollte wenigstens die Information ordentlich vorfinden.
          die Effekte sind ja nur die Show  also 'Schaumschlaegerei'.
          Sprich, wenn es nicht geht, kann man nix machen, aber wir haben ja noch Christine  ;-)
      • dass sich NS und IE unterscheiden finde ich etwas beknackt.
          Markt hin, Markt her - eine gute Werbung ist das allemal nicht, weder fuer NS noch fuer M$.
          Wird sich eben Opera ueber einige Prozente mehr zu freuen haben, das ist alles, was man damit erreicht.

      Gruss Norbert

  2. 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

    1. 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