Javascript:如何删除绑定(bind)到删除按钮的元素(动态)

标签 javascript

我当前正在使用添加按钮将文本框中的输入添加到列表中。我还将一个按钮绑定(bind)到每个列表元素,然后将它们附加到无序列表中。如何删除对应删除按钮的onclick元素?仅纯 JavaScript。

window.onload = function() {

  var elements = [];
  var textInput;

  document.getElementById("addButton").onclick = function() {

    textInput = document.getElementById("inputBox").value;

    if (textInput == "") {
      alert("Make sure your input is not empty!");
    } else {


      var liNode = document.createElement('li');
      var btnNode = document.createElement('button');

      var btnText = document.createTextNode("Remove Item");
      btnNode.appendChild(btnText);

      var textNode = document.createTextNode(textInput);
      liNode.appendChild(textNode);
      liNode.appendChild(btnNode);

      document.getElementById("myInputList").appendChild(liNode);
    }

  }


  function addElementToList(element) {
    if (element != "") {
      elements.push(element);
    } else {
      alert("Make sure the input field is not empty!")
    }
  }
}
<!DOCTYPE html>
<html>

<body>

  <head>
    <script src="func.js"></script>
  </head>

  <input type="text" id="inputBox">
  <br>
  <button id="addButton">Add</button>
  <br>
  <br>
  <ul id="myInputList"></ul>

</body>

</html>

最佳答案

Use addEventListener to register click event over created button.

使用.remove() ,从其所属的树中删除该对象。

试试这个:

window.onload = function() {
  var elements = [];
  document.getElementById("addButton").onclick = function() {
    var textInput = document.getElementById("inputBox").value;
    if (textInput == "") {
      alert("Make sure your input is not empty!");
    } else {
      var liNode = document.createElement('li');
      var btnNode = document.createElement('button');
      var btnText = document.createTextNode("Remove Item");
      btnNode.appendChild(btnText);
      var textNode = document.createTextNode(textInput);
      liNode.appendChild(textNode);
      liNode.appendChild(btnNode);
      document.getElementById("myInputList").appendChild(liNode);
      btnNode.addEventListener('click', removeHandler);
    }
  }

  function removeHandler() {
    this.parentNode.remove(); // this will be `button` element and `parentNode` will be `li` element
  }

  function addElementToList(element) {
    if (element != "") {
      elements.push(element);
    } else {
      alert("Make sure the input field is not empty!")
    }
  }
}
<input type="text" id="inputBox">
<br>
<button id="addButton">Add</button>
<br>
<br>
<ul id="myInputList"></ul>

关于Javascript:如何删除绑定(bind)到删除按钮的元素(动态),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35810153/

相关文章:

javascript - 我可以根据浏览器的宽度使用不同的 skrollr anchor 值吗?

javascript - 用JS控制表

javascript - 为什么我必须包装一个数字来调用它的方法?

javascript - 在 select2 上禁用 "No matches found"文本和自动完成

javascript - 如何从 asp.net 中的 javascript 调用代码隐藏函数?

javascript - jquery未知图片请求

javascript - 如何编写一个可以与 Node.js、RequireJS 以及没有它们一起工作的模块

javascript - 如何将填充作为可以单击以触发事件的 div 的一部分

javascript - Express 中间件中丢失 ajax 数据

javascript - 将页面的所有标题转换为列表