JavaScript将元素发送到addEventListener函数

JavaScript将元素发送到addEventListener函数,javascript,dom-events,addeventlistener,Javascript,Dom Events,Addeventlistener,我试图在JS上创建一个简单的篮子,但在为每个表行创建删除按钮时遇到了问题 每次添加新行时,我都运行init()函数,并在每行的三个单元格上放置事件侦听器。删除按钮位于此处: currentRowDelete.addEventListener('click', deleteRow()); 现在的问题是,每次单击delete按钮时,我都会得到函数本身的MouseEvent对象,而我无法获取元素的rowIndex 以下是全部代码: 我需要在每次单击“删除”按钮时运行deleteRow功能 另外,我只

我试图在JS上创建一个简单的篮子,但在为每个表行创建删除按钮时遇到了问题

每次添加新行时,我都运行
init()
函数,并在每行的三个单元格上放置事件侦听器。删除按钮位于此处:

currentRowDelete.addEventListener('click', deleteRow());
现在的问题是,每次单击delete按钮时,我都会得到函数本身的
MouseEvent
对象,而我无法获取元素的
rowIndex

以下是全部代码:

我需要在每次单击“删除”按钮时运行
deleteRow
功能


另外,我只使用普通的JS进行此操作。

传递给函数
deleteRow()
的参数是一个实现事件接口的对象,要获取您单击的按钮,请使用
this
Event.target
。您需要的是行索引,唯一具有此类内容的元素是最近的
tr
,在本例中是
parentElement
parentElement
最近的(“tr”)

init();
calcTotalSum();
函数deleteRow(按钮){
设i=this.closest(“tr”).rowIndex;
document.querySelector(“#productBasket”).deleteRow(i);
}
函数init(){
document.querySelector('.addNewRow')。addEventListener('click',addNewRow');
var rows=document.querySelector(“#productBasket”).rows;
var rowLength=rows.length;
对于(变量i=1;i

标题
量
价格
添加新产品
总价:


您需要将一个元素传递给
deleteRow
函数,然后使用该函数获取其parentNode的parentNode以删除其当前parentNode(表行)

您应该使用querySelector获取类为
delete
的所有元素,以设置其单击事件侦听器

init();
calcTotalSum();
函数deleteRow(按钮){
var i=button.rowIndex;
var p=button.parentElement;
试一试{
p、 parentNode.parentNode.removeChild(p.parentNode);
}捕获(错误){}
//document.querySelector(“#productBasket”).deleteRow(i);
}
函数init(){
document.querySelector('.addNewRow')。addEventListener('click',addNewRow');
var rows=document.querySelector(“#productBasket”).rows;
var rowLength=rows.length;
对于(var i=1;i

标题
量
价格
添加新产品
总价:


还更正了如何在
init
中的for循环中添加eventListener,非常感谢,不知何故,我失去了在函数中仍然可以使用“this”对象的想法。在本例中,这是删除按钮本身。
function deleteRow(button) {
  let i = this.closest("tr").rowIndex;
  document.querySelector("#productBasket").deleteRow(i);
}