Javascript 将参数传递给eventListener函数
我有一个函数检查(e),当我将test()添加到eventListener时,我希望能够从中传递参数。这可能吗?比如说让mainlink变量通过参数。这样做好吗 我把javascript放在下面,我也把它放在jsbin上:Javascript 将参数传递给eventListener函数,javascript,Javascript,我有一个函数检查(e),当我将test()添加到eventListener时,我希望能够从中传递参数。这可能吗?比如说让mainlink变量通过参数。这样做好吗 我把javascript放在下面,我也把它放在jsbin上: 在这种情况下,我通常会将参数保存到对象(只要方便),然后在函数中检索它们,如下所示: // Listener function receives e (the event object) by default. function eventReceiver(e) {
在这种情况下,我通常会将参数保存到对象(只要方便),然后在函数中检索它们,如下所示:
// Listener function receives e (the event object) by default.
function eventReceiver(e) {
var obj;
// Find object which triggered the event
e.srcElement ? obj = e.srcElement : obj = e.target;
// obj.someProperty has been set elsewhere, replacing a function parameter
alert(obj.someProperty);
}
这是跨浏览器的,允许您通过事件目标的属性传递对象和值
我最初是从
这个
关键字开始的,但它在浏览器中的表现不同。在FF中,它是触发事件的对象。在IE中,这是事件本身。因此,srcelelement
/target
解决方案诞生了。不过,我有兴趣看看其他解决方案—使用+1。一个解决方案是将“check”函数向上移动到test()函数中。作为一个内部函数,它将自动引用其外部范围中的变量。像这样:
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', function(e) {
if (document.getElementById('myid')) {
if (document.getElementById('myid').parentNode === mainlink) {
var target = (e && e.target) || (event && event.srcElement);
if (target!= mainlink) {
mainlink.removeChild(mainlink.lastChild);
};
};
};
});
};
将事件侦听器包装到函数中:
document.addEventListener(
'click',
function(e,[params]){
check(e,[params]);
}
);
很好,很快,谢谢大家的帮助。希望有一天我能像你一样做出贡献。
document.addEventListener(
'click',
function(e,[params]){
check(e,[params]);
}
);