Javascript DOM,如何确定触发了哪个事件监听器?

标签 javascript

我不太确定如何在标题中表达我的主要问题,但我会尽力在这里解释。我正在创建一个 JavaScript 应用程序,它接受用户输入,然后将其作为列表项添加到列表中。我希望每个列表项都有一个按钮,按下该按钮将删除相应的列表项。这是我的代码:

function addToList(){
  removeBtn = document.createElement('button');

  listItem = document.createElement('li');
  listItem.textContent = row[0]+ ' $' + row[1]+ ' ' + row[2]+' ';

  removeBtn.addEventListener('click', removeLi);

  listItem.appendChild(removeBtn);

  list.append(listItem);
}

我已经尝试了一些方法,但我只是不知道要在我的removeLI函数中放入什么来删除父项 <li>被点击的按钮的。任何帮助将不胜感激

最佳答案

使用事件目标并引用最接近的 li 元素

function removeLi(event) {
  event.target.closest('li').remove()
}

var list = document.querySelector("#list")

function addToList(text){
  var removeBtn = document.createElement('button');

  var listItem = document.createElement('li');
  listItem.textContent = text

  removeBtn.addEventListener('click', removeLi);

  listItem.appendChild(removeBtn);

  list.append(listItem);
}

addToList(1)
addToList(2)
addToList(3)
<ul id="list"></ul>

关于Javascript DOM,如何确定触发了哪个事件监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61534883/

相关文章:

javascript - JavaScript 函数中变量的作用域

javascript - 这个 snap svg 插件有什么问题吗?

javascript - 通过循环将对象添加到数组中的正确方法

javascript - 使用 javascript Angular 更新表单控件

javascript - html5 + javascript 播放波浪声音

javascript - 检测 HTML Canvas 内某些点的鼠标悬停?

javascript - 重新使用选项变量作为 jquery 扩展的输出

javascript - window.location() 是否与 GET 请求相同?

javascript - 在 foreach Javascript 中找到最大的数值?

javascript - 重复自身的物体