Übergabe von Parametern an eventListener-Funktion
Habe ich diese Funktion check(e), ich würde gerne in der Lage sein, um Parameter von test (), wenn ich es hinzufügen der eventListener. Ist das möglich? Wie sagen, um den mainlink variable zum Durchlauf durch die Parameter. Ist dieses auch gut zu tun?
Ich die javascript-unten, außerdem habe ich es auf jsbin: http://jsbin.com/ujahe3/9/edit
function test() {
if (!document.getElementById('myid')) {
var mainlink = document.getElementById('mainlink');
var newElem = document.createElement('span');
mainlink.appendChild(newElem);
var linkElemAttrib = document.createAttribute('id');
linkElemAttrib.value = "myid";
newElem.setAttributeNode(linkElemAttrib);
var linkElem = document.createElement('a');
newElem.appendChild(linkElem);
var linkElemAttrib = document.createAttribute('href');
linkElemAttrib.value = "jsbin.com";
linkElem.setAttributeNode(linkElemAttrib);
var linkElemText = document.createTextNode('new click me');
linkElem.appendChild(linkElemText);
if (document.addEventListener) {
document.addEventListener('click', check/*(WOULD LIKE TO PASS PARAMETERS HERE)*/, false);
};
};
};
function check(e) {
if (document.getElementById('myid')) {
if (document.getElementById('myid').parentNode === document.getElementById('mainlink')) {
var target = (e && e.target) || (event && event.srcElement);
var obj = document.getElementById('mainlink');
if (target!= obj) {
obj.removeChild(obj.lastChild);
};
};
};
};
- sehr nett und schnell, vielen Dank Euch allen für Eure Hilfe. Hoffentlich werde ich dazu beitragen kann, einen Tag wie Sie.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wickeln Sie Ihre Ereignis-listener in eine Funktion:
Eine Lösung wäre, nach dem "check" - Funktion bis in Ihre test () - Funktion. Als innere Funktion ist, wird es automatisch in der Lage sein zu finden, um die Variablen in seiner äußeren Umfang. Wie diese:
Was ich normalerweise tun, in dieser situation ist sparen Argumente zum Objekt (wenn es bequem ist), und dann rufen Sie in der Funktion, wie diese:
Dies ist cross-browser und ermöglicht das übergeben von Objekten und Werten, die durch die Eigenschaften der Veranstaltung Ziel.
Ich begann zunächst mit der
this
Stichwort, aber das verhält sich anders, cross-browser. FF, es ist das Objekt, das das Ereignis ausgelöst wurde, auf. Im IE ist es das Ereignis selbst. So, diesrcElement
/target
Lösung war geboren. Ich bin interessiert zu sehen, die andere Lösungen, aber ein +1.