【发布时间】:2021-05-31 04:44:08
【问题描述】:
使用 JS DOM 的购物清单练习。 我的完整代码:https://codepen.io/lil_a/pen/BaQKvqZ?editors=0110
我必须为每个新创建的列表项添加一个新的“删除”按钮。我设法做到了,但它只将我创建的按钮附加到最后一个列表项,而不是其他新添加的项目。怎么做才能让每个列表项都有一个新的删除按钮?
我搜索过类似的问题,但总的来说,代码与我的不同,我必须全部重做。有没有办法用我的代码做到这一点?
HTML
<h1>Shopping List</h1>
<p id="first">Get it done today</p>
<input id="userinput" type="text" placeholder="enter items">
<button id="enter">Enter</button>
<ul id = "list">
<li>Notebook<button class="btn">Delete</button></li><br>
<li>Jello<button class="btn">Delete</button></li><br>
<li>Spinach<button class="btn">Delete</button></li><br>
<li>Rice<button class="btn">Delete</button></li><br>
<li>Birthday Cake<button class="btn">Delete</button></li><br>
<li>Candles<button class="btn">Delete</button></li><br>
</ul>
JS
function createListElement() {
var li = document.createElement("li");
li.appendChild(document.createTextNode(input.value));
ul.appendChild(li).addEventListener("click", toggleList);
//append and toggle on and off new list items
input.value = "";
ul>li.appendChild(deleteButton).addEventListener("click", removeItem);
//append "delete button" to newly added "li"
}
var elements = document.getElementsByClassName("btn");
for (var i = 0; i < elements.length; i++){
elements[i].addEventListener("click", removeItem);
}
function removeItem(){
this.parentNode.remove();
}
var deleteButton = document.createElement("button");
deleteButton.setAttribute("class", "btn");
deleteButton.appendChild(document.createTextNode("Delete"));
【问题讨论】:
标签: javascript dom event-handling dom-events dom-manipulation