tc6: tabellenzellen einfaerben mit class

moin moin
hier mein erster richtiger eintrag im forum
also ich moechte die eigenschaften mehrerer! tabellenzelle beeinflussen
wenn ich in einem anderen frame uebereinen index gehe (onmouseover)
das habe ich auch erreicht
mein problem besteht darin, dass ich keine arbeitsfreundliche erweiterungsmoeglichkeit habe
wenn mehr a-werte hinzukommen, muss ich zahlen !
und die zu uebergebenden schleifenwerte erhoehen bzw. aendern
frage: kann man das ganze nicht mit "class" machen
z.b. alle class="aa" einfaerben, alle class="bb"
mit id geht es nicht - weil keine doppelten ids moeglich
meine ideen sind zu ende
ich hoffe auf euch
thanx for all ;)

hier die quellcodes:

--- das Frameset ----

[...]
<frameset cols="160,*" frameborder=0 border=0>
<frame src="navigate.htm"  name="navi" frameborder=no border=0 marginheight="0" marginwidth="0" scrolling=no noresize framespacing=0>
<frame src="shorts.htm" name="into" frameborder=no border=0 marginheight="0" marginwidth="0" scrolling=auto noresize framespacing=0>
</frameset>
[...]

--- Datei --- "navigate.htm"

[...]
function LightOn(b,max) {
var i;
for(i=b;i<=max;i=i+2) {
parent.into.document.all.tags("td")[i].style.setAttribute("BackgroundColor","orange","true"); } }

function LightOff(b,max) {
var i;
for(i=b;i<=max;i=i+2) {
parent.into.document.all.tags("td")[i].style.setAttribute("BackgroundColor","#bc8f8f","true"); } }

//-->
</script>
[...]
<a href="shorts.htm#a" target="into" class="a" onMouseover="LightOn(0,24)" onMouseout="LightOff(0,24)">A</a>
<a href="shorts.htm#b" target="into" class="a" onMouseover="LightOn(26,26)" onMouseout="LightOff(26,26)">B</a>
[...]

--- Datei --- "shorts.htm"

[...]
<tr><td class="aa"><a name="a">A01</a></td><td class="b">text</td></tr>
<tr><td class="aa">A02</td><td class="b">text</td></tr>
<tr><td class="aa">A03</td><td class="b">text</td></tr>
<tr><td class="aa">A04</td><td class="b">text</td></tr>
<tr><td class="aa">A05</td><td class="b">text</td></tr>
<tr><td class="aa">A06</td><td class="b">text</td></tr>
<tr><td class="aa">A07</td><td class="b">text</td></tr>
<tr><td class="aa">A08</td><td class="b">text</td></tr>
<tr><td class="aa">A09</td><td class="b">text</td></tr>
<tr><td class="aa">A10</td><td class="b">text</td></tr>
<tr><td class="aa">A11</td><td class="b">text</td></tr>
<tr><td class="aa">A12</td><td class="b">text</td></tr>
<tr><td class="aa">A13</td><td class="b">text</td></tr>
<tr><td class="bb"><a name="b">B01</a></td><td class="b">text</td></tr>
<tr><td class="cc"><a name="c">C01</a></td><td class="b">text</td></tr>
<tr><td class="cc">C02</td><td class="b">text</td></tr>
[...]

  1. Hi Toolchild!

    Also ich habe mal einfach einen source genommen und ändere ihn ab (wird aber wie deiner nur mit dem ie funktionieren):

    Dein Source:
    function LightOn(b,max) {
      for(i=b;i<=max;i=i+2) {
        parent.into.document.all.tags("td")[i].style.setAttribute("BackgroundColor","orange","true");
      }
    }

    ich mache daraus mal folgendes:
    function LightOn() {
      for(i=0;i<parent.into.document.all.tags("td").length;i++) {
        if (parent.into.document.all.tags("td")[i].className == "aa") {
          parent.into.document.all.tags("td")[i].style.setAttribute("BackgroundColor","orange","true");
        }
      }
    }

    Nach dem selben prinzip kannste auch deine anderen funktionen abändern.

    CU Roman

    1. hey danke thomas, danke roman
      tja - eins hab ich ja noch vergessen
      aber - ihr denk halt an alles
      wie thomas schrieb geht das ganze nur mit ie
      ich wollte netscape natuerlich auch mit einbauen
      durch eine geeignete abfrage wollte ich die sich unterscheidenen befehlsfolgen in den funktionen austauschen
      erreichen koennte man das indem man diese befehlsfolgen auf variablen legt
      kann das sein, dass netscape die zellen ueber "layer" ansteuert ?
      oder habe ich da was in‚ falschen hals bekommen
      soweit die theorie - bei der praxis fehlts ...

      zu euren loesungen ..

      » Da du nur das erste td innerhalb des tr umfärben möchtest, kannst du das so machen:
      ne! ich will ja nur die versch. buchstabenzellen faerben (alle a‚s, b‚s, ...)

      daher klappt leider romans‚ loesung nicht ganz

      function LightOn() {
        for(i=0;i<parent.into.document.all.tags("td").length;i++) {
          if (parent.into.document.all.tags("td")[i].className == "aa") {
            parent.into.document.all.tags("td")[i].style.setAttribute("BackgroundColor","orange","true");
          }
        }
      }
      i=0 muesste ja auch veraendert werden
      daher hatte ich die werte ja uebergeben - siehe erster eintrag von mir

      » document.styleSheets.rules0;
      thomas - hier muesste ich aber die classe angeben td.aa, td.bb
      klappt das auch ?

      » http://msdn.microsoft.com/workshop/author/dynstyle/style_sheets.asp]
      » gesehen, ueberlegt, neu ins forum ..

      leider bleibt noch das ns-problem
      waere schoen wenn ihr noch mal so hilfsbereit seid
      erst mal schoenes wochenende

      1. Hallo tc6

        zu euren loesungen ..

        leider bleibt noch das ns-problem

        Meinst du vielleicht sowas:

        <html><head>
        <style>
        td { position:relative; background-color:#FF7F00}
        </style>
        <script type="text/javascript" language="javascript1.2">
        <!--
        function faerbeZelle(x, y){
        td_ = (document.all)? document.all.tags('TD') : document.layers;
        for(i=0;i<td_.length;i++){
          if(i %x <y)
           if(document.all) td_[i].style.backgroundColor='#FF0000';
           else {td_[i].resizeTo(200,19);td_[i].bgColor='#FF0000'};
        }
        }
        // -->
        </script>
        </head>

        <body bgcolor="#00AFAF" onload="faerbeZelle(4, 2)"><br>
        <table align="center" border ="1"
        cellpadding="0" cellspacing="0" bgcolor="#FF0000">
        <tr><td width="200">Zelle 1 links</td><td width="200">Zelle 1 rechts</td></tr>
        <tr><td>Zelle 2 links</td><td>Zelle 2 rechts</td></tr>
        <tr><td>Zelle 3 links</td><td>Zelle 3 rechts</td></tr>
        <tr><td>Zelle 4 links</td><td>Zelle 4 rechts</td></tr>
        </table>
        </body></html>

        Mit den Parametern x und y läßt sich die Färbung an
        eine verschiedene Anzahl von Spalten anpassen, z.B. (4, 2) bei 2 Spalten, (6, 3)bei 3 Spalten.

        funktioniert im IE und NS

        Liebe Grüße
        ptak

  2. Hallo,
    du kannst beim IE auch zentral definierte Style-Angaben im nachhinein ändern.
    Da du nur das erste td innerhalb des tr umfärben möchtest, kannst du das so machen:
    <style>
    td {background-color:#-dein bisheriger "cc" Wert }
    td.b { wie gehabt }
    </style>

    Du brauchst nun nur die Hintergrundfarbe der "td"-Definition zu ändern. Dies hat keine Auswirkungen auf die TD`s in dennen class="b" steht, da diese Angabe die Zentrale Definition überschreibt. Also kannst du eine Tabzeile so schreiben:
    <tr><td>x</td><td class="b">text</td></tr>

    Jetzt mußt du nur noch die zentrale td-Definition ändern:
    document.styleSheets.rules0;

    Mit "rules[0]" sprichst du die erste style-Definition in den <style> Tags an (hier td). Somit kannst du mit einem anderen Wert jede Zentrale style-Angabe im nachhinein ändern.

    Mehr dazu bei M$ < http://msdn.microsoft.com/workshop/author/dynstyle/style_sheets.asp>

    Schöne Grüße
    Thomas Mell