将参数传递给eventListener函数

bry*_*mon 3 javascript

我有这个函数检查(e),当我将它添加到eventListener时,我希望能够从test()传递参数.这可能吗?就像说让mainlink变量通过参数.这样做甚至好吗?

我把javascript放在下面,我也在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);
      };
    };
  };
};
Run Code Online (Sandbox Code Playgroud)

Koo*_*Inc 6

将您的事件监听器包装到一个函数中:

document.addEventListener( 
          'click', 
           function(e,[params]){
              check(e,[params]);
           } 
);
Run Code Online (Sandbox Code Playgroud)