删除单击<li> onclick

won*_*t77 15 javascript onclick

我有这个JavaScript代码:

window.onload = init;

function init () {
    var button = document.getElementById("submitButton");
    button.onclick = addItem;
    var listItems = document.querySelectorAll("li");  //assigning the remove click event to all list items
    for (var i = 0; i < listItems.length; i++) {
        listItems[i].onclick = li.parentNode.removeChild(li);
    }
}

function addItem() {
    var textInput = document.getElementById("item");  //getting text input
    var text = textInput.value;   //getting value of text input element
    var ul = document.getElementById("ul");  //getting element <ul> to add element to
    var li = document.createElement("li");  //creating li element to add
    li.innerHTML = text;    //inserting text into newly created <li> element

    if (ul.childElementCount == 0) {  //using if/else statement to add items to top of list
        ul.appendChild(li);       // will add if count of ul children is 0 otherwise add before first item
    }
    else {
        ul.insertBefore(li, ul.firstChild);
    }
}

function remove(e) {
    var li = e.target;
    var listItems = document.querySelectorAll("li"); 
    var ul = document.getElementById("ul");
    li.parentNode.removeChild(li);        
}
Run Code Online (Sandbox Code Playgroud)

这个HTML:

<body>
     <form>
         <label for="item">Add an item: </label>
          <input id="item" type="text" size="20"><br>
         <input id="submitButton" type="button" value="Add!">
     </form>
     <ul id="ul">
     </ul>
     <p>
         Click an item to remove it from the list.
    </p>  
</body>
Run Code Online (Sandbox Code Playgroud)

我想要做的是删除<li>用户点击的任何元素,但这似乎不起作用,我无法在这个特定场景的其他任何地方找到答案.希望有人可以帮助我,告诉我我错过了什么.

mpl*_*jan 29

既然你没有提到jQuery

document.getElementById("ul").addEventListener("click",function(e) {
  var tgt = e.target;
  if (tgt.tagName.toUpperCase() == "LI") {
    tgt.parentNode.removeChild(tgt); // or tgt.remove();
  }
});
Run Code Online (Sandbox Code Playgroud)

你可能想把它包起来

$(function() {
  $("#submitButton").on("click",function() {
    var text = $("#item").val();   //getting value of text input element
    var li = $('<li/>').text(text)
    $("#ul").prepend(li); 
  });
  $("#ul").on("click","li",function() {
    $(this).remove();
  });
});   
Run Code Online (Sandbox Code Playgroud)

重新阅读这个问题我认为你也想把它添加到动态LI中

var listItems = document.getElementsByTagName("li"); // or document.querySelectorAll("li"); 
for (var i = 0; i < listItems.length; i++) {
  listItems[i].onclick = function() {this.parentNode.removeChild(this);}
}
Run Code Online (Sandbox Code Playgroud)

这是我希望您编写代码的完整代码

现场演示

window.onload=function() { // or addEventListener
  // do stuff to the DOM here
}
Run Code Online (Sandbox Code Playgroud)

如果你想使用jQuery,整个过程会变得更简单

现场演示

li.innerHTML = text;    //inserting text into newly created <li> element
li.onclick = function() {
  this.parentNode.removeChild(this);
   // or this.remove(); if supported
}
Run Code Online (Sandbox Code Playgroud)

  • +1表示不假设可以使用jquery (6认同)

Ste*_*erg 5

我知道你已经收到了答案,但回到原来的删除功能.你有以下几点:

function remove(e) {
    var li = e.target;
    var listItems = document.querySelectorAll("li"); 
    var ul = document.getElementById("ul");
    li.parentNode.removeChild(li);        
}
Run Code Online (Sandbox Code Playgroud)

把它改成这个,你应该得到你想要实现的目标:

function remove(e)
{
   var li = e.target;
   var ol = li.parentElement;
   ol.removeChild( li);
   return false;
}
Run Code Online (Sandbox Code Playgroud)