Javascript 如果我在元素的EventListener函数中,如何获取该元素
当我的页面更改时,应该添加具有特定类名的元素的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
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();
}