[英]javascript remove li without removing ul?
有没有办法在不删除 ul 的情况下删除 ul 的 li 元素? 我似乎只能找到这个。
var element = document.getElementById('myList');
element.parentNode.removeChild(element);
但是,这会删除 ul。 我希望能够即时删除 append li 元素,而不必在每次删除 li 元素时都创建 ul 元素。 只是在寻找一种更简单的方法。 谢谢你的帮助。
<div id="listView">
<ul id="myList" class="myList-class">
<li>item 1</li>
<li>item 2</li>
</ul>
</div>
你可以做这样的事情。
var myList = document.getElementById('myList');
myList.innerHTML = '';
如果您使用 jQuery
$('#myList').empty();
这两个都将删除列表中的所有内容。
这应该可以解决问题:
var lis = document.querySelectorAll('#myList li');
for(var i=0; li=lis[i]; i++) {
li.parentNode.removeChild(li);
}
删除ul
的原因是因为您有指向ul
的element
变量。 然后,您的下一行代码向上移动到父级 ( #listView
) 并应用removechild
方法,并将element
变量(指向ul
元素)传递给它。
如果您需要删除所有 li 元素,则可以使用:
document.getElementById('myList').innerHTML = '';
这将完全清空ul
。 如果您需要删除选定的li
元素,则可以使用以下内容从#myList
遍历到特定的子元素:
var ulElem = document.getElementById('myList');
ulElem.removeChild(ulElem.childNodes[i])
其中i
是要删除的li
的索引(第 1 个为 0,第 2 个为 1,依此类推)
供参考: https : //developer.mozilla.org/en-US/docs/Web/API/Node.removeChild
const li = document.querySelectorAll(".list-item-class");
for(let i = 0; i <= li.length; i++ ){
l = li[i];
l.remove();
}
只要我们有第一个孩子 - 删除它。 (只要我们有一个成员)。
const removeNodesFromList = () => {
const nodes = document.querySelector('.ul-class-selector');
while (nodes.firstChild) {
nodes.removeChild(nodes.firstChild);
}
};
let ol = document.querySelector("ol"); function addItem() { let lastIndex = ol.childElementCount; let li = document.createElement("li"); li.dataset.index = lastIndex; let a = document.createElement("a"); a.href = "#"; a.innerHTML = " Remove"; a.addEventListener("click", function(e) { e.preventDefault(); let index = e.target.parentNode.dataset.index; removeItem(parseInt(index)); }) li.appendChild(a); ol.appendChild(li); } function removeItem(i) { let li = ol.children[parseInt(i)]; ol.removeChild(li); for (let j = i; j < ol.childElementCount; j++) { let li = ol.children[j]; li.dataset.index = j; } } addItem();
<ol> </ol> <button onclick="addItem()">Add</button>
我解决这个问题的方法是这样的。 我在创建功能中创建了删除功能:
HTML
<body>
<div class="myclass">
<h1>TODO App</h1>
<!-- user input -->
<input class="user_input" type="mytext" name="mytext" placeholder="Enter text">
<button class="mybutton">Add</button>
</div>
<div>
<ul class="ul-container"></ul>
</div>
</body>
JavaScript
function creation() {
const userInput = document.querySelector(".user_input").value;
const ulContianer = document.querySelector(".ul-container");
console.log(userInput);
if (userInput !== "") {
let li = document.createElement("li");
let test = document.createTextNode(userInput);
li.append(test);
li.addEventListener('click', function (e) {
li.parentNode.removeChild(li);
})
ulContianer.appendChild(li);
document.querySelector(".user_input").value = "";
}
}
所以在你创建它之后。 单击 li 元素后,它就会消失。
const ulist = document.querySelector('#myList')
function clear(myList)
{ ulist.innerHTML = " "}
clear(ulist);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.