Sven Rautenberg: this?

Beitrag lesen

Moin!

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

Ja, also gibt man dem Link eine id und schon versteckt es den Link.

Ohne ID kann man den Link ja auch verstecken, weil es "this" gibt.

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

Das finde ich nicht.

Das "zeitaufwendig" bezog sich nicht aufs Programmieren, sondern auf die Ausführungszeit von Javascript.

Wenn du deiner Funktion this.id übergibst, ist das ein String, der mit getElementById erst mühsam (für Javascript) in der Ansammlung aller IDs des Dokumentes herausgesucht werden muß, um dann den Zugriff beispielsweise auf die style-Eigenschaften zu bekommen.

Wenn du einfach "this" übergibst, dann ist das eine Referenz auf den konkreten Link. Ein Zugriff auf die styles-Eigenschaften ist direkt und ohne Suchaufwand möglich, das ist javascriptmäßig viel schneller ausgeführt.

Natürlich ist das bei genau einem Link ziemlich egal. Aber wenn's an Menüstrukturen geht, die aus- und eingeblendet werden sollen und etliche Links enthalten, dann wird das schon wieder interessant, denn von der Schnelligkeit der Reaktion dieses Menüs hängt dessen Bedienbarkeit entscheidend ab.

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

Wenn man natürlich etwas verändern will, was über dem Objekt ist, ist dein Script natürlich besser, aber ich dachte es gehe direkt um das Objekt.

Wenn ich direkt etwas am Link verändern will, spare ich mir natürlich diese parentNode-Geschichte.

onmouseover="hi(this)"

function hi(obj)
{
  obj.style.backgroundColor="#F00";
}

Schneller gehts eigentlich kaum. :)

- Sven Rautenberg