本文档旨在指导开发者在使用JavaScript动态生成列表项时,如何将删除按钮放置在列表项的左侧。通过调整DOM元素的创建和添加顺序,实现自定义样式的列表项,并提供完整的示例代码和CSS样式,帮助你轻松掌握列表项的布局控制。
在JavaScript中动态创建列表项(
实现方法
核心思路是在创建
示例代码
以下代码展示了如何修改原有的createListElement函数,将删除按钮放置在列表项的左侧:
function createListElement() {
// 创建新的 li 元素
var li = document.createElement("li");
// 创建删除按钮
var newButton = document.createElement("button");
newButton.innerHTML = "X";
// 先将按钮添加到 li 元素
li.appendChild(newButton);
// 然后添加文本节点
li.appendChild(document.createTextNode(input.value));
input.value = "";
li.addEventListener("click", function() {
li.classList.toggle("done");
});
newButton.addEventListener("click", function() {
ul.removeChild(li);
});
// 将构造好的 li 元素添加到 ul 元素
ul.appendChild(li);
}在上面的代码中,关键的改变在于:
完整代码示例
var button = document.getElementById("enter")
var input = document.getElementById("user");
var ul = document.querySelector("ul");
var li = document.query
SelectorAll("li");
var clearButton = document.getElementsByClassName("clearButton");
function listItems() {
return input.value.length
}
function createListElement() {
// 创建新的 li 元素
var li = document.createElement("li");
// 创建删除按钮
var newButton = document.createElement("button");
newButton.innerHTML = "X";
// 先将按钮添加到 li 元素
li.appendChild(newButton);
// 然后添加文本节点
li.appendChild(document.createTextNode(input.value));
input.value = "";
li.addEventListener("click", function() {
li.classList.toggle("done");
});
newButton.addEventListener("click", function() {
ul.removeChild(li);
});
// 将构造好的 li 元素添加到 ul 元素
ul.appendChild(li);
}
function addItemAfterEnter() {
if (listItems() > 0) {
createListElement();
}
}
function addItemAfterKeypress(event) {
if (listItems() > 0 && event.keyCode === 13) {
createListElement();
}
}
button.addEventListener("click", addItemAfterEnter);
input.addEventListener("keypress", addItemAfterKeypress)
for (var i = 0; i < li.length; i++) {
li[i].addEventListener("click", function() {
this.classList.toggle("done");
})
}
for (var i = 0; i < clearButton.length; i++) {
clearButton[i].addEventListener("click", function() {
this.parentNode.remove();
})
}CSS 样式 (可选)
以下是一些可选的CSS样式,可以用来美化列表和按钮:
ul {
list-style-type: none;
padding: 0;
width: 15rem;
}
li button {
color: red;
margin-right: .5rem;
border-radius: 10px;
border: none;
}
/* 额外的样式 */
li:hover, li button:hover {
cursor: pointer;
}
.done {
text-decoration: line-through;
}HTML 结构
Javascript event listener
注意事项
总结
通过简单地调整 JavaScript 代码中 DOM 元素的创建和添加顺序,就可以轻松地控制删除按钮在列表项中的位置。理解 DOM 结构和元素添加顺序是实现自定义列表项样式的关键。 同时,注意优化 DOM 操作和事件处理,以提高应用程序的性能。