Javascript 如果我在元素的EventListener函数中,如何获取该元素

Javascript 如果我在元素的EventListener函数中,如何获取该元素,javascript,callback,addeventlistener,Javascript,Callback,Addeventlistener,当我的页面更改时,应该添加具有特定类名的元素的EventListener。可能有多个元素具有此类名。这些元素还有一个名为taskNr的属性。单击时,eventlistener函数应删除id为“task”+taskNr的元素,eventlistener将附加到该元素 我试图给函数一个带有taskNr的参数,但它变为最后一个元素的taskNr。这就是为什么我现在考虑从函数内部引用taskNr //fügt eventlistener für button removetask hinzu funct

当我的页面更改时,应该添加具有特定类名的元素的EventListener。可能有多个元素具有此类名。这些元素还有一个名为
taskNr
的属性。单击时,eventlistener函数应删除id为“task”+taskNr的元素,eventlistener将附加到该元素

我试图给函数一个带有
taskNr
的参数,但它变为最后一个元素的
taskNr
。这就是为什么我现在考虑从函数内部引用
taskNr

//fügt eventlistener für button removetask hinzu
function activateremovetasklistener(){
  var removeBtns = document.getElementsByClassName("fa fa-times-circle floatright fa-fw notfirst");
  for (i=0; i < removeBtns.length; i++) {
    var taskNr = removeBtns[i].getAttribute("taskNr");
    removeBtns[i].addEventListener("click", function(){
            removeTask(taskNr);
    })
  };    
}

//entfernt Task
function removeTask(tasknumber){
  var taskClass = document.getElementById("task" + tasknumber);
  taskClass.remove();
}
//fügt eventlistener für按钮移除询问hinzu
函数activateremovetasklistener(){
var removeBtns=document.getElementsByClassName(“fa-fa-times-circle-floatright-fa-fw-notfirst”);
对于(i=0;i
对于此代码,它始终使用
removeBtns
中最后一个元素的
taskNr
。它应该使用来自
removeBtns[i]
(eventlistener附加到的元素)的元素。

该对象具有以下详细信息:


另请参阅哪些内容涵盖了您的方法不起作用的原因。

您始终可以使用以下方法访问
单击
回调
函数中的相关元素:

event.target || event.srcElement
您的代码应该是:

removeBtns[i].addEventListener("click", function(event){
    removeTask(event.target || event.srcElement);
})

function removeTask(element){
  element.remove();
}
您可以查看更多详细信息:

事件.src元素

Event.target的非标准别名(来自旧版本的Microsoft Internet Explorer),出于web兼容性目的,其他一些浏览器已开始支持该别名

事件。目标

对事件最初调度到的目标的引用


target
可能会得到一个子元素(例如,如果按钮内有一个span),最好避免使用它。@Quentin我刚才使用
.target
.srcElement
仅用于浏览器兼容性目的。
removeBtns[i].addEventListener("click", function(event){
    removeTask(event.target || event.srcElement);
})

function removeTask(element){
  element.remove();
}