Select 这个或函数中的变量
Select this or variable in function
listenerForm()函数是用addeventlistener执行的。在函数中,我得到 "this" 对象以获得 dom 元素。现在我需要使用这个函数,但我需要在参数中传递 dom 元素。如果我传递一个参数,如何区分?
for (var i = 0; i < form.length; i++) {
form[i].addEventListener("click", listenerForm,true);
}
function listenerForm(form) {
console.log(form); //result MouseEvent {isTrusted: true}
console.log(this);//result fomr element.
}
listenerForm(domElement);
如果我用addeventlistener执行函数,我只需要得到这个。如果我传递表单参数,我只需要参数。
我在addeventlistener中找到了传递参数的解决方案,但我无法在for循环中创建函数。
如果您不需要访问事件对象(您似乎不需要?),则从事件处理程序调用函数而不是将其用作事件处理程序:
form[i].addEventListener("click", function() {
listenerForm(this);
}, true);
现在参数 form
将始终引用 DOM 元素。
试试这个:
for (var i = 0; i < form.length; i++) {
form[i].addEventListener("click", listenerForm(this), true);
}
function listenerForm(clickedFormElement) {
console.log(clickedFormElement);//result form element
}
listenerForm(clickedFormElement);// i don't know what you're trying to do here!!
使用柯里化和绑定方法的解决方案是这个
form.forEach(function(item){
item.addEventListener('click', listenerForm.bind(null, item));
})
现在 listenerForm 的第一个参数是点击的元素,它指的是全局对象
listenerForm()函数是用addeventlistener执行的。在函数中,我得到 "this" 对象以获得 dom 元素。现在我需要使用这个函数,但我需要在参数中传递 dom 元素。如果我传递一个参数,如何区分?
for (var i = 0; i < form.length; i++) {
form[i].addEventListener("click", listenerForm,true);
}
function listenerForm(form) {
console.log(form); //result MouseEvent {isTrusted: true}
console.log(this);//result fomr element.
}
listenerForm(domElement);
如果我用addeventlistener执行函数,我只需要得到这个。如果我传递表单参数,我只需要参数。 我在addeventlistener中找到了传递参数的解决方案,但我无法在for循环中创建函数。
如果您不需要访问事件对象(您似乎不需要?),则从事件处理程序调用函数而不是将其用作事件处理程序:
form[i].addEventListener("click", function() {
listenerForm(this);
}, true);
现在参数 form
将始终引用 DOM 元素。
试试这个:
for (var i = 0; i < form.length; i++) {
form[i].addEventListener("click", listenerForm(this), true);
}
function listenerForm(clickedFormElement) {
console.log(clickedFormElement);//result form element
}
listenerForm(clickedFormElement);// i don't know what you're trying to do here!!
使用柯里化和绑定方法的解决方案是这个
form.forEach(function(item){
item.addEventListener('click', listenerForm.bind(null, item));
})
现在 listenerForm 的第一个参数是点击的元素,它指的是全局对象