Hallo,
Ich habe mir 'starter' und 'target' überlegt.
target scheint mir aber ein schlechter name, da dies ja effektiv als Objekt existiert.
Wie geht man in JS damit um? In Perl ist das ja alles klar.
Ich sehe da kein Problem. Was soll target denn sein? target existiert lediglich als Eigenschaft des Event-Objektes. In keiner Zeile deines Codes arbeitest du mit dem Event-Objekt. target als lokale Variable existiert nur, weil du sie eingeführt hast, nicht davon unabhängig. Überschneidungen gibt es nicht.
Worüber du dir Gedanken machen solltest, ist, dass du das Element mit der ID catalogue über getElementById ansprichst und dann als Referenz vorliegen hast (in der Variable o). Anstatt aber diese Referenz in der Event-Handler-Funktion zu nutzen, überschreibst du die Referenz mit etwas anderem und übergibst dann den String "catalogue". Der wird später sowieso wieder an getElementById weitergegeben. Das ist doppelt gemoppelt und vermeidbar.
var elem1 = document.getElementById("bla");
var elem2 = document.getElementById("blub");
elem2.onclick = function () { display(this, elem1) };
Mathias