hermann_k: Automatische Tabellennummerierung und Einfärbung

Hi zusammen,

ich habe ein Problem mit einer generierten Tabelle aus einem Programm raus

Zur Info: Das Programm gibt Variablen aus die "CL613V, CL498V,.... heißen und schreibt alles in eine Liste bis die Variablen aus sind - ich möchte nun jede zweite Zeile einfärben.
Die Variablen "wg_farbe" und "opNum" habe ich so deffiniert:

<script type="text/javascript">
opNum=1;
wg_farbe=1;
</script>
....
....
....

Hier der Quelltext wie er eigentlich recht gut funktioniert (er gibt jede zweite zeile färbig aus):

<script type="text/javascript">
if (wg_farbe==1)
{
document.write(

<tr>  
	<td>XXXXX</td>  
	<td style="width: 25%">CL613V</td>  
	<td style="width: 20%">CL498V</td>  
	<td style="width: 6%">CL418V</td>  
	<td style="width: 8%">CL416V</td>  
	<td style="width: 6%">OP\_LengthOfFeed<br/>  
	OP\_LengthOfRapid<br/></td>  
	<td style="width: 7%">OP\_CycleTime</td>  
	<td>CL7V</td>  
</tr>)  
wg\_farbe=wg\_farbe-1;  
}  
else  
{  
document.write(  
<tr>  
  
	<td class="style4">XXXXX</td>  
	<td class="style4" style="width: 25%">CL613V</td>  
	<td class="style4" style="width: 20%">CL498V</td>  
	<td class="style4" style="width: 6%">CL418V</td>  
	<td class="style4" style="width: 8%">CL416V</td>  
	<td class="style4" style="width: 6%">OP\_LengthOfFeed<br/>  
	OP\_LengthOfRapid<br/></td>  
	<td class="style4" style="width: 7%">OP\_CycleTime</td>  
	<td class="style4">CL7V</td>  
  
</tr>)  
wg\_farbe=wg\_farbe+1;  
}  

</script>

Anstelle der "XXXXX" wollte ich aber ein script laufen lassen welches bei jedem Durchlauf um 1 erhöht:

<script type="text/javascript">
document.write(opNum);
opNum=opNum+1;
</script>

Auch das funktioniert einwandfrei.

Nur beide scripts zusammen wollen einfach nicht laufen!
Also wenn der Quelltext so aussieht bekomme ich kein vernünftiges Ergebnis:
....
....
....
<script type="text/javascript">
if (wg_farbe==1)
{
document.write(
<tr>
<td><script type="text/javascript">
document.write(opNum);
opNum=opNum+1;
</script></td>
<td style="width: 25%">CL613V</td>
<td style="width: 20%">CL498V</td>
<td style="width: 6%">CL418V</td>
....
....
....
Ich hab schon raus gefunden dass vl. das "document.write" den Fehler verursacht aber auch die google Suche hilft mir leider nicht recht viel - ich brauche Javascript ausnahmsweise im Job und bei uns sind so ziemlich alle Internetseiten die mir ev. helfen könnten gesperrt!

Danke!

  1. Hi,

    ich habe ein Problem mit einer generierten Tabelle aus einem Programm raus

    handelt es sich dabei um ein Java-Programm? Dann wäre der Themenbereich JAVA zwar noch immer verkehrt, aber zumindest bestünde ein Zusammenhang.

    <script type="text/javascript">

    Dies ist JavaScript. Es hat mit Java so viel zu tun wie ein Mungo mit einer Mango.

    Hier der Quelltext wie er eigentlich recht gut funktioniert (er gibt jede zweite zeile färbig aus):

    Dieser Code funktioniert garaniert nicht, sondern produziert hübsche JavaScript-Fehler.

    document.write(

    <tr>

    Jau. Du hast keine JavaScript-Variable namens tr definiert, und "kleiner der Wert von tr größer" ist in dieser Sprache kein auswertbares Konstrukt. Da fehlen eine Menge Quotes, und wahrscheinlich noch mehr wie z.B. Escaping oder der Stringkonkatenationsoperator.

    Nur beide scripts zusammen wollen einfach nicht laufen!

    Dazu solltest Du den tatsächlichen Code nennen, nichts was "ungefähr verdeutlichen soll, was Du meinst". Fehlersuche ist bei einer Nachskizzierung des fehlerhaften Codes schwer bis unmöglich.

    Ich hab schon raus gefunden dass vl. das "document.write" den Fehler verursacht aber auch die google Suche hilft mir leider nicht recht viel - ich brauche Javascript ausnahmsweise im Job und bei uns sind so ziemlich alle Internetseiten die mir ev. helfen könnten gesperrt!

    Benutze die CSS-Pseudoklasse :nth-child(). Zwei Zeilen Code - fertig.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. @@Cheatah:

      nuqneH

      Dies ist JavaScript. Es hat mit Java so viel zu tun wie ein Mungo mit einer Mango.

      Dir fällt auch immer wieder was Neues ein.

      Vermutlich hast du bei der Zitatesammlung ein Overflow erzeugt und deshalb ist sie jetzt kaputt.

      Benutze die CSS-Pseudoklasse :nth-child(). Zwei Zeilen Code - fertig.

      Und falls die Unterstützung betagter IEs noch von Bedeutung ist, mit CSS-Expression nachhelfen.

      Qapla'

      --
      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
      (Mark Twain)
      1. Om nah hoo pez nyeetz, Gunnar Bittersmann!

        Dies ist JavaScript. Es hat mit Java so viel zu tun wie ein Mungo mit einer Mango.

        Dir fällt auch immer wieder was Neues ein.

        Und wenn die Mango auch noch in Australien schwimmt, dann hört man nicht mal einen Unterschied.

        Vermutlich hast du bei der Zitatesammlung ein Overflow erzeugt und deshalb ist sie jetzt kaputt.

        #1# genau, wir haben den Schuldigen #2# er hat bestimmt die Kompetenz, sie zu reparieren.

        Matthias

        --
        1/z ist kein Blatt Papier. http://www.billiger-im-urlaub.de/kreis_sw.gif
      2. Dies ist JavaScript. Es hat mit Java so viel zu tun wie ein Mungo mit einer Mango.

        Dir fällt auch immer wieder was Neues ein.

        Vermutlich hast du bei der Zitatesammlung ein Overflow erzeugt und deshalb ist sie jetzt kaputt.

        Schleimer...

        Der Vergleich hinkt. Eher wie ein Mungo mit einer Mamba.

    2. Danke für die schnelle, leider aber nicht recht hilfreiche Antwort!

      Es handelt sich um ein Programm welches Bearbeitungsschritte auf Fertigungsmaschinen ausgibt. Dies erfolgt in HTML, welches ich ja nicht mal brauche - es wird aus dieser HTML Datei ein PDF. Die HTML Datei dient nur zur generierung dieser Liste. In einem Turtorial des Herstellers wird erläutert wie man diese Schritte durchnummeriert:

      <script type="text/javascript"> opNum=1; </script>

      Dann in der Tabelle: <tr>         <td><script type="text/javascript">         document.write(opNum); opNum=opNum+1; </script></td>         <td style="width: 25%">CL613V</td> <td style="width: 20%">CL498V</td> <td style="width: 6%">CL418V</td> <td style="width: 8%">CL416V</td> <td style="width: 6%">OP_LengthOfFeed<br/> OP_LengthOfRapid<br/></td> <td style="width: 7%">OP_CycleTime</td> <td>CL7V</td> </tr>

      Hierbei muss man sagen dass der Tabelleninhalt aus Variablen besteht die NICHT in der HTML Datei definiert sind sondern aus dem Programm ausgelesen werden. Es wird also so lange eine Liste generiert solange z.B. die Variable "CL613V" einen Wert hat.

      Diese Liste ist aber recht unüberschaubar und somit somit soll jede zweite Zeile eingefärbt werden: (Die Variable wg_farbe wird natürlich im oberen Bereich der HTML Datei deffiniert)

      <script type="text/javascript"> if (wg_farbe==1) { document.write( <tr> <td><script type="text/javascript">         document.write(opNum);         opNum=opNum+1; </script></td> <td style="width: 25%">CL613V</td> <td style="width: 20%">CL498V</td> <td style="width: 6%">CL418V</td> <td style="width: 8%">CL416V</td> <td style="width: 6%">OP_LengthOfFeed<br/> OP_LengthOfRapid<br/></td> <td style="width: 7%">OP_CycleTime</td> <td>CL7V</td> </tr>) wg_farbe=wg_farbe-1; } else { document.write( <tr> <td class="style4"><script type="text/javascript"> document.write(opNum); opNum=opNum+1; </script></td> <td class="style4" style="width: 25%">CL613V</td> <td class="style4" style="width: 20%">CL498V</td> <td class="style4" style="width: 6%">CL418V</td> <td class="style4" style="width: 8%">CL416V</td> <td class="style4" style="width: 6%">OP_LengthOfFeed<br/> OP_LengthOfRapid<br/></td> <td class="style4" style="width: 7%">OP_CycleTime</td> <td class="style4">CL7V</td> </tr>) wg_farbe=wg_farbe+1; } </script>

      Ich bin nicht wirklich der Javascript Guru - deshalb dachte ich mir ich schreibe diese Tabelle einfach zweimal. Einmal wo sie in weiß ausgegeben wird und einmal in grau (class="style4") Das ganze dann mit der Bedingung der Farbe (Also 0 oder 1) Das, wie gesagt, funktioniert recht gut wenn ich die erste Spalte der Tabelle lösche (das Javascript welches die Schritte nummeriert)

      <script type="text/javascript"> document.write(opNum); opNum=opNum+1; </script>

      Ich dachte mir halt dass das nach dem "document.write(" kommt (also das was in der Klammer steht) ausgegeben wird - dem ist aber nicht so.

      Wie kann man sowas am besten lösen? Also durchnummerieren und jede zweite Zeile einfärben?

      Vollständigkeithalber der ganze Code wobei ich nicht glaube dass dieser sonderlich hilfreich ist. Wie gesagt: er wird aus einem Programm ausgegeben und dient lediglich dazu ein PDF draus zu machen.

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">

      <head> <meta http-equiv="Content-Language" content="en-us" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Weingartner.com - Zeitstudie</title> <style type="text/css"> .Title { font-family: Verdana; font-size: x-large; font-weight: normal; font-style: normal; border-style: none none solid none; border-bottom-width: thin; } .Normal { font-family: Verdana; font-size: small; font-weight: normal; font-style: normal; color: #000000; border-style: none; } .NormalNarrow { font-size: small; font-weight: normal; font-style: normal; font-family: "Verdana"; color: #000000; border-style: none; } p {font-family: Verdana; }

      table { border:2px solid #000000; font-size: small; font-weight: normal; font-style: normal; font-family: "Verdana"; color: #000000; }

      td { border:1px solid #cccccc; }

      .style1 { background-color: #FFFF99; } .style2 { font-size: small; background-color: #0080FF; } .style3 { font-size: medium; } .style4 { font-size: small; background-color: #C0C0C0; }

      </style> </head>

      <body>

      <p>BEGIN_SETTINGS<br /> CreateSimulationPictures=0<br /> SimulationPictureWidth=350<br /> SimulationPictureHeight=350<br /> CreatePartPicture=1<br /> PartPictureWidth=500<br /> PartPictureHeight=300<br /> CreateToolingPictures=0<br /> CreateToolingHolderPictures=0<br /> LoadReportInViewer=1<br /> NAReplacementString=-<br /> END_SETTINGS</p>

      <script type="text/javascript">
      opNum=1;
      wg_farbe=1;
      </script>
      

      <p><img src="weingartner_logo_2.jpg" style="float: right" /></p> <p>&nbsp;</p> <p class="Title">ARBEITSABLAUF und BEARBEITUNGSZEITEN</p> <p class="Normal"><span class="Normal">auf Weingärtner MPMC Bearbeitungszentrum</span></p> <p class="Title">LMSU_CustomString2</p>

      <p>&nbsp;</p>

      <table style="width: 100%" cellspacing="0" > <tr> <td style="width: 20%" class="style2"><strong>Firma:</strong></td> <td colspan="3"><strong>LMSU_CustomString5</strong></td> <td rowspan="7"> <img src="PartPic.jpg" width="500" height="300" /></td> </tr> <tr> <td style="width: 20%" class="style2"><strong>Kontakt:</strong></td> <td colspan="3">LMSU_CustomString10</td> </tr> <tr> <td style="width: 20%" class="style2"><strong>Gesamtzeit:</strong></td> <td style="width: 50%"><strong>Gen_CycleTime</strong></td> </tr> <tr> <td style="width: 20%" class="style2"><strong>Maschinenbezeichnung:</strong></td> <td style="width: 50%">LMSU_MachineName</td> </tr> <tr> <td style="width: 20%" class="style2"><strong>Werkstück</strong><br/> &nbsp; Bezeichnung:<br /> &nbsp; Zeichnungsnummer:<br/> &nbsp; Materialbezeichnung:</td> <td style="width: 50%"><br/> LMSU_CustomString2<br/> LMSU_CustomString4<br/> LMSU_CustomString6 </td> </tr> <tr> <td style="width: 20%" class="style2"><strong>Rohteil</strong><br/> &nbsp; Werkstoffnummer:<br/> &nbsp; Durchmesser:<br/> &nbsp; Länge:</td> <td style="width: 50%"><br/> LMSU_CustomString3<br/> LMSU_BarDiameter<br/> LMSU_TotalBarLength </td> </tr>

      <tr>
      	<td style="width: 20%" class="style2"><strong>Kommentar:</strong></td>
      	<td colspan="3">&nbsp;<br/>
      	&nbsp;<br/></td>
      </tr>
      

      </table>

      <p>&nbsp;</p>

      <p class="Normal"><span class="Normal">In der Zeitstudie sind keine Zeiten für das Messen, Reinigen und spannen des Werkstückes angegeben<br/>
      	Ein Wechsel der Bearbeitungsreihenfolge, während dem Einfahren des Werkstückes, ist möglich!<br/>
      </span></p>
      

      <p>&nbsp;</p>

      <table style="width: 100%" cellspacing="0"> <tr> <td class="style1"><strong>Nr.</strong></td>

      	<td style="width: 25%" class="style1"><strong>Bearbeitungsablauf</strong></td>
      
      	<td style="width: 20%" class="style1"><strong>Werkzeug</strong></td>
      
      	<td style="width: 6%" class="style1"><strong>CSS [m/min]</strong></td>
      
      	<td style="width: 8%" class="style1"><strong>f [mm/U]<br/>
      	Fz<br/></strong></td>
      
      	<td style="width: 6%" class="style1"><strong>Vorschub[mm]<br/>
      	Eilgang[mm]<br/></strong></td>
      
      	<td style="width: 7%" class="style1"><strong>Zeit</strong></td>
      
      	<td class="style1"><strong>Kommentar</strong></td>
      </tr>
      
      
      <tr>
      	<td colspan="10">BEGIN_TURNINGOP</td>
      </tr>
      

      <script type="text/javascript"> if (wg_farbe==1) { document.write(

      <tr>
      
      	<td><script type="text/javascript">
      	document.write(opNum);
      	opNum=opNum+1;
      	</script></td>
      
      	<td style="width: 25%">CL613V</td>
      
      	<td style="width: 20%">CL498V</td>
      
      	<td style="width: 6%">CL418V</td>
      
      	<td style="width: 8%">CL416V</td>
      
      	<td style="width: 6%">OP_LengthOfFeed<br/>
      	OP_LengthOfRapid<br/></td>
      
      	<td style="width: 7%">OP_CycleTime</td>
      
      	<td>CL7V</td>
      </tr>)
      wg_farbe=wg_farbe-1;
      }
      else
      {
      document.write(
      <tr>
      
      	<td class="style4"><script type="text/javascript">
      	document.write(opNum);
      	opNum=opNum+1;
      	</script></td>
      
      	<td class="style4" style="width: 25%">CL613V</td>
      
      	<td class="style4" style="width: 20%">CL498V</td>
      
      	<td class="style4" style="width: 6%">CL418V</td>
      
      	<td class="style4" style="width: 8%">CL416V</td>
      
      	<td class="style4" style="width: 6%">OP_LengthOfFeed<br/>
      	OP_LengthOfRapid<br/></td>
      
      	<td class="style4" style="width: 7%">OP_CycleTime</td>
      
      	<td class="style4">CL7V</td>
      
      </tr>)
      wg_farbe=wg_farbe+1;
      }
      

      </script>

      <tr>
      	<td colspan="10">END_TURNINGOP<br/>
      	BEGIN_MILLINGOP</td>
      </tr>
      

      <script type="text/javascript"> if (wg_farbe==1) { document.write( <tr> <td class="style4"><script type="text/javascript"> document.write(opNum); opNum=opNum+1; </script></td>

      	<td class="style4" style="width: 25%">CL613V</td>
      
      	<td class="style4" style="width: 20%">CL498V</td>
      
      	<td class="style4" style="width: 6%">CL418V</td>
      
      	<td class="style4" style="width: 8%">CL416V</td>
      
      	<td class="style4" style="width: 6%">OP_LengthOfFeed<br/>
      	OP_LengthOfRapid<br/></td>
      
      	<td class="style4" style="width: 7%">OP_CycleTime</td>
      
      	<td class="style4">CL7V</td>
      </tr>)
      wg_farbe=wg_farbe-1;
      }
      else
      {
      document.write(
      <tr>
      	<td><script type="text/javascript">
      	document.write(opNum);
      	opNum=opNum+1;
      	</script></td>
      
      	<td style="width: 25%">CL613V</td>
      
      	<td style="width: 20%">CL498V</td>
      
      	<td style="width: 6%">CL418V</td>
      
      	<td style="width: 8%">CL416V</td>
      
      	<td style="width: 6%">OP_LengthOfFeed<br/>
      	OP_LengthOfRapid<br/></td>
      
      	<td style="width: 7%">OP_CycleTime</td>
      
      	<td>CL7V</td>
      </tr>)
      wg_farbe=wg_farbe+1;
      }
      

      </script>

      <tr>
      	<td colspan="10">END_MILLINGOP<br/>
      	INSERT_OPERATIONS</td>
      </tr>
      

      </table>

      <p>&nbsp;</p>

      <p class="Normal"><span class="Normal">Erstellt von Gen_UserName am Gen_Date um Gen_Time.</span></p> <p class="Normal"><span class="Normal">Dateipfad: Gen_FileName</span></p>

      </body>

      </html>

      Danke.

      1. Om nah hoo pez nyeetz, hermann_k!

        <style type="text/css">

        ...

        </style> </head>

        Dir ist es also aus irgendwelchen Gründen nicht möglich, in den durch die drei Punkte gekennzeichneten Bereich

        tr {background-color: gold;}
        tr:nth-child(odd) {background-color: green;}
        

        einzufügen?

        Matthias

        --
        1/z ist kein Blatt Papier. http://www.billiger-im-urlaub.de/kreis_sw.gif
    3. Hi,

      Dies ist JavaScript. Es hat mit Java so viel zu tun wie ein Mungo mit einer Mango.

      Du meinst soviel wie eine (kühle) Halbe mit Halberstadt ;-)

      cu,
      Andreas

      --
      Warum nennt sich Andreas hier MudGuard?
      O o ostern ...
      Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
  2. Moin!

    Hier der Quelltext wie er eigentlich recht gut funktioniert (er gibt jede zweite zeile färbig aus):

    <script type="text/javascript">
    if (wg_farbe==1)
    {
    document.write(...);
    wg_farbe=wg_farbe-1;
    }
    else
    {
    document.write (...);
    wg_farbe=wg_farbe+1;
    }
    </script>

    Du verarschst uns .. oder machst Du es dir nur selbst zu schwer, das große Problem zu einem kleinen zu machen?

    Variante 1:

    var farbe_1='#ddddff';
    var farbe_2='#ffdddd';
    var farbe=farbe_1;

    for (i=0; i<sonstawas, i++) {
       if (farbe==farbe_1) {
            farbe=farbe_2;
       } else {
            farbe=farbe_1;
       }
        document.write('<tr style="bgcolor:'+farbe+'"'> ... </tr>");

    }

    Variante 2: Schneller und geeignet für 2 und mehr verschiedenfarbige Zeilen:
    farben=new Array('#ddf','#dfd','fdd');
    var anzFarben=farben.length;

    for (i=0; i<sonstawas, i++) {
         <http://de.selfhtml.org/javascript/sprache/operatoren.htm#berechnung@title=farbnummer=i % farben.length>;
         document.write('<tr style="bgcolor:' + farben[farbnummer] + '"'> ... </tr><td>Zeile:' + (i+1) + '</td>  ... </tr> );
    }

    Natürlich ungetestet. Korrigiere die Syntax-Fehler selbst.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix