Sven Rautenberg: this?

Beitrag lesen

Moin!

Du kannst es aber z.B. so machen:

Kompliziert, würde ich meinen. :)

on...="fun(this.id);"

Eventhandler bezeichnen als "this" das Element, in dem sie drinstehen.

Mit onirgendwas="fun(this)" wird der Funktion exakt dieses Element übergeben.

function fun(x) {
if (document.getElementById){
document.getElementById(x).style.display = "none";
}}

Da das Element der Funktion schon bekannt ist, kann man direkt auf seine Properties zugreifen:
x.style.display = "none";

Fertig. Das Suchen der ID mit getElementById ist viel zu zeitaufwendig.

Als konkretes Beispiel: Mouseover-Highlighting mit Javascript (mußte IE-tauglich sein, JS ist definitiv eingeschaltet:

Javascript:
function hi(obj)
{
  if (obj.parentNode)
  {
    obj.parentNode.parentNode.style.backgroundColor="#DDD";
  }
}
function lo(obj)
{
  if (obj.parentNode)
  {
    obj.parentNode.parentNode.style.backgroundColor="#FFF";
  }
}

HTML:
<table>
<tr><td>Text</td><td><a href="linkziel" onmouseover="hi(this)" onmouseout="lo(this)">bearbeiten</a></td></tr>
</table>

Die Hintergrundfarbe der <tr>-Zeile wird geändert.

- Sven Rautenberg