Ragnarök: getElementById(ID)

Hallo Zusammen,

nun ich habe schon wieder ein Problem mit meinen <tr>'s.
Und zwar folgendes:
Ich möchte die class des <tr>'s ändern, je nachdem welche Aktion mit der Maus ausgeführt wurde.

HTML-Code:
<tr class="test1" onmouseover="ActNorm(this,'on'); return false;" onmouseout="ActNorm(this,'off'); return false;" onclick="ActNorm(this,'click'); return false;">
</tr>

JAVASCRIPT Code:
function ActNorm(id, type){
  if(type == 'click'){
     document.getElementById(id).className = 'test3';
    }
  else if(type == 'off' && document.getElementById(id).className == 'test3'){
     document.getElementById(id).className = 'test3';
  }
  else
  {
  document.getElementById(id).className = 'test1'
  }

}

Nun bekomme ich immer den Fehler getElementById() ist null oder kein Objekt.

Ich sehe keinen andern Weg wie ich die class des tr's sonst überschreiben könnte.

Vielen Dank für eure Hilfe

Ragnarök

  1. hi,

    Nun bekomme ich immer den Fehler getElementById() ist null oder kein Objekt.

    du übergibst this an die funktion - dass ist aber bereits eine referenz auf das aktuelle objekt, nicht dessen ID.

    this.ID zu übergeben könnte evtl. funktionieren - oder auf getElementById ganz verzichten, da du mit this ja schon das objekt hast, welches du eigentlich mit getElementById erst ermitteln willst.

    gruss,
    wahsaga

  2. Nabend,

    <tr onmouseover="ActNorm(this,'on'); return false;" [..]>
         document.getElementById(id).className = 'test3';

    id ist bei dir lt. Funktionsaufruf quasi die Zelle selber, nicht deren nicht vorhandene ID.
    Du kennst aber auch die Pseudoklassen aus CSS, oder?

    Bis denne,

  3. Hallo,

    nun ich habe schon wieder ein Problem mit meinen <tr>'s.
    Und zwar folgendes:
    Ich möchte die class des <tr>'s ändern, je nachdem welche Aktion mit der Maus ausgeführt wurde.

    HTML-Code:
    <tr class="test1" onmouseover="ActNorm(this,'on'); return false;" onmouseout="ActNorm(this,'off'); return false;" onclick="ActNorm(this,'click'); return false;">

    Der Bezeichner this bezieht sich hier auf das TR-Element.

    </tr>

    JAVASCRIPT Code:
    function ActNorm(id, type){

    ^mit this übergibst Du in der Variablen id ein TR-Objekt.

    if(type == 'click'){
         document.getElementById(id).className = 'test3';

    ^hier wird eine ID erwartet. In id steht aber ein TR-Objekt.

    }

    HTML-Code:
    <tr class="test1" onmouseover="ActNorm(this,'on'); return false;" onmouseout="ActNorm(this,'off'); return false;" onclick="ActNorm(this,'click'); return false;">
    </tr>

    JAVASCRIPT Code:
    function ActNorm(obj, type){
      if(type == 'click'){
         obj.className = 'test3';
        }
      else if(type == 'off' && obj.className == 'test3'){
         obj.className = 'test3';
      }
      else
      {
      obj.className = 'test1'
      }

    }

    Statt die Klasse zu ändern, würde ich allerdings lieber die einzelnen STYLE-Eigenschaften wie gewünscht verändern:

    obj.style.backgroundColor = ... ; usw.

    viele Grüße

    Axel