Torsten: Scriptfehler

Hallo! Ich habe ein Script geschrieben, dass Datensätze (mit einem Radio-Button) ausgibt. Klickt man einen Datensatz (Zeile) an, so soll der Radio-Button gewählt werden und die Zeile farbig hinterlegt werden. Der Radibutton wird auch gewählt, aber die Zeile nich farbig.

Hier mein Beispielscript:
--------------------------------------------------------
<html>
<head>
<title></title>
<script language="JavaScript">
<!--
 function select(i,cell)
 {
  document.gruppe.id[i].click(); // Radiobutton wird gewählt
  document.all.tab.bgColor='#3366ff'; // Tabellenfarbe festlegen
  document.all.cell.bgcolor='#000000';// Zeile soll gefärbt werden
 }
//-->
</script>
</head>
<body>
 <form name="gruppe" action="#" method="post">
  <table width="50%" border="1" bgcolor="3366ff" id="tab">
   <tr onclick="select(0,this)">
    <td>Zelle 1</td>
    <td><input type="radio" name="id" value="1"></td>
   </tr>
   <tr onclick="select(1,this)">
    <td>Zelle 2</td>
    <td><input type="radio" name="id" value="2"></td>
   </tr>
   <tr onclick="select(2,this)">
    <td>Zelle 2</td>
    <td><input type="radio" name="id" value="3"></td>
   </tr>
</table>
</form>
</body>
</html>
--------------------------------------------------------
Ich hoffe mir kann jemand helfen!!!

  1. hallo,

    document.gruppe.id[i].click(); // Radiobutton wird gewählt

    Aber nur deswegen, weil es ein Element mit dem Namen "gruppe" tatsächlich gibt (dein Formular).

    document.all.tab.bgColor='#3366ff'; // Tabellenfarbe festlegen

    Ist nicht erfüllbar, weil es kein Element mit dem Namen "all" gibt  -  außerdem ist "document.all" etwas problematisch.

    Grüße aus Berlin

    Christoph S.

    1. Wie kann ich es denn anders machen? Ich möchte die Zeile, in der der Radiobutton gewählt ist, farbig hinterlegen.

      So geht es bei mir leider auch nicht:

      <script language="JavaScript">
      <!--
       function select(i,cell)
       {
        document.f_m_gruppen.id[i].click();
        document.tab.bgColor='#3366ff';
        cell.style.cursor = 'default';
        cell.bgColor = '#ffffff';
       }
      //-->
      </script>

      1. hallo Torsten,

        Wie kann ich es denn anders machen? Ich möchte die Zeile, in der der Radiobutton gewählt ist, farbig hinterlegen.

        Lies dir die dafür relevanten Kapitel in SELFHTML durch, informiere dich insbesondere über die Möglichkeiten, mit Javascript CSS-Eigenschaften einzelner Elemente festzulegen.

        So geht es bei mir leider auch nicht:
        <script language="JavaScript">

        Gewöhne dir bitte an, hier
         <script type="text/javascript" language="javascript">
        zu schreiben.

        Grüße aus Berlin

        Christoph S.

        1. <script type="text/javascript" language="javascript">

          Die Type Definition reicht und funktioniert in alle aktuellen Browsern.

          document.all... es ist besser wenn man sich das Objekt z.b. mit getElementById() oder der Funktion MM_findObj() holt (u.A. bei Dreamweaver dabei).

          Die Hintergrundfarbe einer ganzen Zelle zu seten ist relativ einfach:

          var obj = document.getElementById(idDeinerZeile);
          obj.style.backgroundColor = "#FF0000";

          Du kannst auch die bereits existenten Funktionen benutzen:

          var obj = document.getElementById(idDeinerZeile);
          obj.setAttribute("backgroundColor","#FF0000","false");

          Oder zum entfernen des Attributes wenn du eine andere Zeile benutzt:

          var obj = document.getElementById(idDeinerZeile);
          obj.removeAttribute("backgroundColor","false");

          Ich bin mir allerdings nicht sicher ob man bei den Funktionen die .style Definitionen aus JS oder die aus CSS nehmen muss.

          Grüße

          colossus

          1. hallo,

            <script type="text/javascript" language="javascript">
            Die Type Definition reicht und funktioniert in alle aktuellen Browsern.

            Man geht mit beiden Angaben aber auf Nummer sicher.

            es ist besser wenn man sich das Objekt z.b. mit getElementById()

            darauf läufts hinaus  -  aber nur bei DOM-fähigen Browsern.

            oder der Funktion MM_findObj() holt (u.A. bei Dreamweaver dabei).

            Nein, bitte keine Macromedia-Scripts, damit gibts immer nur Äger, wenn man was korrigieren will.

            var obj = document.getElementById(idDeinerZeile);
            obj.style.backgroundColor = "#FF0000";

            Korrekt, und die Auflösung in einer Variablen ist gar nicht zwingend nötig, wenn das Teil nur ein einzigesmal notiert werden soll.

            Ich bin mir allerdings nicht sicher ob man bei den Funktionen die .style Definitionen aus JS oder die aus CSS nehmen muss.

            CSS.

            Grüße aus Berlin

            Christoph S.