通过 /id json-server 删除 div

Posted

技术标签:

【中文标题】通过 /id json-server 删除 div【英文标题】:Delete div by /id json-server通过 /id json-server 删除 div 【发布时间】:2019-12-12 00:30:43 【问题描述】:

我使用 JSON-Server 编写了一个 Todo 任务应用程序来管理 REST 路由。

我在这里上传了我的代码: https://codesandbox.io/s/json-server-i5hv5

我遇到的问题是,当我单击待办事项时,我只想从数据库中删除 id 的那个 DIV。

但是,删除功能只有在您单击最后添加的 div 时才有效。即使这样,它也会删除数据库中的所有 id 和页面上的 div,而不是我点击的单个 div。

努力完成这项工作。

我只想删除我点击的 div。而且我只希望通过分配id=id 在数据库中删除该div。

这是有问题的点击功能:

 document.getElementById('id').addEventListener('click', function(event) 
 
    event.preventDefault();
    console.log('clicked');

    var divs = document.querySelectorAll('div');
    for (var i = 0; i < divs.length; i++) 
      var id = divs[i].getAttribute('id');
      divs[i].parentElement.removeChild(divs[i]);
      fetchService.deleteTodoTask(id);
    
  );

任何方法/提示,将不胜感激!

【问题讨论】:

我应该能够在那个链接上添加任务吗? @lollmbaowtfidgafgtfoohwtbs 出于某种原因任务没有保存在该链接中,但它们在本地保存,我会看看 好吧,你的代码实际上是......删除那些 divs b/c 这就是你告诉它要做的事情。如果你不想为每个 div 都这样做,那么只为你想要的 1 个 div 做。你似乎在为他们所有人做这件事。删除 for 循环。 @lollmbaowtfidgafgtfoohwtbs - 嘿,只是想知道你对这个有什么想法。我刚刚开始重新拾起这个。 你明白了吗?我看到你在下面发布了一个答案.. 【参考方案1】:

通过更改单击时访问 DOM 元素的方式,我得到了这个工作。下面的代码似乎运行良好。

我是他们在点击时将抓取的 ID 传递给 fetchService.deleteTodoTask(id)。 这是处理删除 REST 路由的位置:

    const list = document.querySelector('.js-todo-list');
    list.addEventListener('click', event => 

   if (event.target.classList.contains('js-delete-todo')) 
     const itemKey = event.target.parentElement.dataset.key;
     const id = itemKey;
     var elem = document.getElementById(id);
     elem.parentNode.removeChild(elem);
     fetchService.deleteTodoTask(id);
   
 );


  function deleteTodoTask(id) 
    const options = 
      method: 'DELETE'
    ;
    return fetch(`$url/$id`, options);
  

【讨论】:

以上是关于通过 /id json-server 删除 div的主要内容,如果未能解决你的问题,请参考以下文章

使用json-server零基础搭建接口

json-server 无法通过本地 IP 访问

无法在 JSON-SERVER 中执行 CRUD

使用 json-server 来创建一个模拟 API

json-server无法通过本地IP访问

JSON-Server:使用参数模拟端点