JavaScript addEventListener im for loop
Saturday 24. January 2009 | dextaBeschäftige mich seid ein paar Tagen mal wieder mit Greasemonkey, also mit JavaScript, und baue eine Script um das vorher alles mit “unsafeWindow” gelöst hat durch addEventListener. Ein Problem war das zum Teil viel HTML Code in die Seite geschrieben wird der aber wiederum Funktionen mit Parametern aufrufen sollte. Nach der Erkenntnis das man einfach nach dem einfügen in den DOM Baum die Objekte über die ID wieder Referenzieren kann, war eine for Schleife schnell geschrieben die jedem Element einen Listener verpassen sollte. Aber der Aufruf geschah dann immer ohne Parameter, egal wie ich versucht habe das zu lösen, die Allgemeine Lösung schien zu sein dem Objekt noch einen Parameter zu geben denn die Funktion wiederum auslesen sollte. Der naheliegende Weg, der mir aus Java bekannt war, einfach auf das Objekt zu schauen der den Event ausgelöst hat, gelang nicht auf den ersten Blick. Bis ich folgende Lösung im Netz gefunden habe, es lohnt sich sehr oft eine Nacht über dem Problem schalfen zu gehen.
for (var r=0;r
document.getElementById(listName[r]).addEventListener("click", function(e){tooltiph(e)}, true);
}
Die gerufende Funktion greift dann wieder auf die ID zu die ja schon als eindeutiger Bezeichner aus einer Liste Stammt.
function tooltiph(e) {
var targ = e.target;
var name = targ.id;
var softInfo = GM_getValue(name);
Zur Erklärung: der Event wird mit dem (e) erst an die Pseudo Funktion dann an die zu Rufende Callback Funktion gereicht, beim ausführen schaut man auf den der es ausgelöst hat und greift dann auf das HTML Element zu. Nun steht die ID in einer Variable mit der ich arbeiten kann, das weiterreichen eines Wertes wird wohl etwas anders gelöst werden müssen.
Verwandte Artikel
.. Loomax 300 M MP3 CD Player . .. Big Ideas (Don’t get any) . .. Kernel 2.6.15 nForce2 SATA Probleme ? . .. Samstagnacht eine eclipse im Laptop . .. Feenix – Grafikpaket auf externem Server .
Tags: Greasemonkey, Javascript, MonstersGame
Optionen
Kommentar || Feed || Kommentare und Pings sind derzeit nicht erlaubt.
Ja Javascript ist schon eine Sache für sich. Da kann ich dich schon verstehen!