嗨,我遇到问题,获取事件并将其传递给闭包函数,我也希望(这)变量
我用
console.log(e);
显示未定义>>什么是最好的sloution:)
我试试这段代码
<script>
for(var i=0;i<a.length;i++){
a[i].addEventListener("keydown",(function(e){
return function(){
if (e.keyCode == 13 && !e.shiftKey){
console.log(e); // e its undefined this is the problem
console.log(i); // its get i value no problem here
//now iam use the closure for get i value
//var that = this;
}
};
})(e), false);
}
</script>
答案 0 :(得分:1)
为什么不直接访问函数内的e
<script>
a[i].addEventListener("keydown",(function(){
var index=i;
return function(e){
if (e.keyCode == 13 && !e.shiftKey){
console.log(this);
console.log(e);
console.log(index);
}
};
})(), false);
答案 1 :(得分:0)
不确定为什么需要关闭才能执行此操作。您可以使用function.prototype.apply
来调用函数并指定this
引用的内容。见这里:
function myFunction(e) {
console.log('myFunction', 'event', e);
console.log('myFunction', 'this', this);
}
var clickBait = document.getElementById('clickBait');
clickBait.addEventListener("click", function(e){
e.preventDefault();
myFunction.apply(e.target, [e]);
});
在这里工作小提琴:http://jsfiddle.net/ToddT/vnms6yL1/
如果你需要关闭,你至少可以说出原因吗?这会有所帮助。