XaraX: Alle Input-Felder in Tabellenzeile ansprechen

Beitrag lesen

Hallo Andreas!

es keimt in mir Das Fragezeichen. Wieso mittels JS? Der Code legt die Vermutung nahe, daß er über eine Schleife erzeugt wird und Deiner Beschreibung zwar nicht zu entnehmen, aber vermutlich soll nun jede zweite Zeile eine Schattierung bekommen:

<?php
$b=0;
deine_schleife()
   {
   if(b==0)
      {
      $b=1;
      $c=" class='mit_hintergrund'";
      }
   else $b=0;
   echo "<tr$c>";
   foreach([~])                 /*oder for()*/
      {
      echo "<td><input$c ~></td>";
      }
   echo '</tr>';
   unset($c);
   }
?>

Sollte jede Zeile eine eigene Farbe kekommen, wird sich dies sicher über ein Datenfeld realisieren lassen, was die einzelnen CSS-Klassen mit ihren Definitionen in Abfolge des zu generierenden HTML nebenher bereitstellt.

Mit JS hättest Du die Möglichkeit über node auf die einzelnen Zeilen und dann deren Inhalt zuzugreifen. Allerdings würde das die Dokumente unnötig aufblähen.

Die IDs solltest Du in dem Falle durchlaufend als (str) "tr".$i für $i++ mit PHP erstellen.

<table>
<tr id="tr0">
  <td><input type="text" name="data[1][1]"></td>
  <td><input type="text" name="data[1][2]"></td>
  <td><input type="text" name="data[1][3]"></td>
</tr>
<tr id="tr1">
  <td><input type="text" name="data[2][1]"></td>
  <td><input type="text" name="data[2][2]"></td>
  <td><input type="text" name="data[2][3]"></td>
</tr>
</table>

Für DIESES Konstrukt würde folgendes Javascript funktionieren:

for(i=0;document.getElementById('tr'+i);i++)
  {
  for(j=1;document.getElementById('tr'+i).childNodes[j];j+=2)
   {
   document.getElementById('tr'+i).childNodes[j].firstChild.style.background='#808080'
   }
  }

ACHTUNG: Für <tr><td></td></tr> (ohne Leerräume) gilt dies nicht mehr! Im Zweifel mit dem Dom Inspector arbeiten.

Gruß aus Berlin!
eddi