javascript - 如何在单击其子元素时删除 li

标签 javascript

我正在使用 javascript 动态创建 li,我想向动态创建的每个 li 元素添加一个关闭按钮,以便在单击关闭按钮时删除 li 元素。这是迄今为止我的代码:

   function addNew(){
    // get value from input field

    var taskName = document.getElementById('task-name').value;


    // innerHTML to be inserted inside li

    var fullText = taskName + '<span class = "close" onclick = 
   "addListener(this)">&times;</span>';


   // calling create function from Element object

   Element.createNew('li','className','tasks',0,fullText);
  }

  // remove function

   function addListener(e){
       e.parentNode.parentNode.removeChild(e.parentNode);
   }

问题是 remove 函数删除了最后一个 li,而不是单击的 li。

这是JSFiddle的问题。

最佳答案

将所有列表项存储在数组中。

//suppose your list items have a class name 'lists'
//create a global var 
var lis = document.getElementsByClassName('lists');

最初它是空的, 所以在你的 add 方法中(你将新的列表项附加到 ul 中, 将新列表项推送到列表数组中。

并在 addEvent(e) 方法中,循环列表数组中的每个元素

function addEvent(e){
for(var i=0; i<lists.length; i++){
if(lists[i] === e){
//remove the lists element by using lists[i] instead of e
// and remember to pop the lists[i] and resize the lists array
}
}

关于javascript - 如何在单击其子元素时删除 li,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43831632/

相关文章:

javascript - HTML 页面中的多滚动错误

javascript - Angular 5 - 动态行添加清除表中的选择

javascript - 如果失败, Angular 回调 api 添加错误消息

javascript - 无法读取数组长度

javascript - 如何用\n替换</br>和<br/>?

javascript - AngularJS 搜索表单抛出未定义的错误

javascript - 使用javascript在csv文件中保留前导零

javascript - Angular 2 Http 无法正常工作

javascript - 如果找到字符串如何发出警报

javascript - jQuery 中的 HTML 字符串返回错误