gpt4 book ai didi

Javascript 删除线

转载 作者:行者123 更新时间:2023-12-03 07:08:22 25 4
gpt4 key购买 nike

我一直在试图弄清楚,但没有得到任何地方。我是学习 Javascript 的新手,所以我只是在测试如何将项目添加到待办事项列表中,然后当您单击 li 项目时,它会将其划掉。

我已经能够做到所有这些,但我正在苦苦挣扎的是:

当我添加一个新的列表项时,我的删除它的功能不起作用。不知道怎么解决?

var input = document.getElementById("input");
var btn = document.getElementById("btn");
var ul = document.querySelector("ul");
var li = document.querySelectorAll("li");


function getLength() {
return input.value.length;
};

function createElement() {
var li = document.createElement("li");
li.appendChild(document.createTextNode(input.value));
ul.appendChild(li);
input.value = "";
};


function click() {
if (getLength() > 0) {
createElement();
}
};


function keyPress() {
if (getLength() > 0 && event.which === 13) {
createElement();
}
};

function strikeThrough(item) {
item.addEventListener("click", function() {
item.classList.toggle("done");
})
};

li.forEach(strikeThrough);

btn.addEventListener("click", click);
input.addEventListener("keypress", keyPress);
<!DOCTYPE html>

<html>

<head>
<title>WORK TO DO LIST</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>
<h1>LIST OF THINGS TO COMPLETE</h1>
<input id="input" type="text" placeholder="Enter">
<button id="btn">Enter</button>
<ul>
<li>This is a starter</li>
</ul>
<script type="text/javascript" src="actions.js"></script>
</body>

</html>

最佳答案

.done类没有与之关联的任何样式,您应该添加一些 css 以便元素获得罢工低谷;

.done {
text-decoration: line-through;
}

创建新的 <li> 后您应该调用 strikeThrough()再次函数添加事件监听器,所以在 createElement()里面功能:
...
ul.appendChild(li);
input.value = "";
strikeThrough(li);
strikeTrough()除了参数之外的函数,您应该在 foreach 中传递元素,而不是根据全局变量关闭;
// Old
li.forEach(strikeThrough);

// New
li.forEach((e) => {strikeThrough(e); });

var input = document.getElementById("input");
var btn = document.getElementById("btn");
var ul = document.querySelector("ul");
var li = document.querySelectorAll("li");


function getLength() {
return input.value.length;
};

function createElement() {
var li = document.createElement("li");
li.appendChild(document.createTextNode(input.value));
ul.appendChild(li);
input.value = "";
strikeThrough(li);
};


function click() {
if (getLength() > 0) {
createElement();
}
};


function keyPress() {
if (getLength() > 0 && event.which === 13) {
createElement();
}
};

function strikeThrough(item) {
item.addEventListener("click", function() {
item.classList.toggle("done");
})
};

li.forEach((e) => {strikeThrough(e); });

btn.addEventListener("click", click);
input.addEventListener("keypress", keyPress);
.done {
text-decoration: line-through;
}
<!DOCTYPE html>

<html>

<head>
<title>WORK TO DO LIST</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>
<h1>LIST OF THINGS TO COMPLETE</h1>
<input id="input" type="text" placeholder="Enter">
<button id="btn">Enter</button>
<ul>
<li>This is a starter</li>
</ul>
<script type="text/javascript" src="actions.js"></script>
</body>

</html>

关于Javascript 删除线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60929824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com