javascript - Javascript,追加节点添加整个数组而不是最后一个元素
问题描述
所以我仍在学习 javascript,对于我的第一个列表项目,我已经到了可以将数组添加到 HTML 页面的地步,但不是获取最后一个元素并添加它,而是将整个数组添加到每一行. 如何更改它以便只添加最后一个元素?
HTML
<!DOCTYPE html>
<html>
<head>
<title>Task Tracker</title>
<link rel="stylesheet" type="text/css" href="todo.css">
<script type="text/javascript" src="todo.js"></script>
</head>
<body>
<div>
<p>Task Manager</p>
<input type="text" name="submitButton" id="userInput">
<button onclick=addTask()>Enter</button>
</div>
<div>
<h3>Task</h3>
<div id='taskList'>
<ul id="myList">
</ul>
</div>
</div>
</body>
</html>
JavaScript
let Task = [];
function addTask(){
var newTask = document.getElementById("userInput").value;
Task.push(newTask);
updateTaskList();
};
function updateTaskList(){
var node = document.createElement('LI');
var textNode;
for (let i = Task.length - 1; i >= 0; i -= 1){
textNode = document.createTextNode(Task[i]);
console.log(Task[i]);
node.appendChild(textNode);
document.getElementById("myList").appendChild(node);
}
}
解决方案
您的updateTaskList
函数始终遍历任务列表中的所有任务(通过 for 循环)。
如果您只想添加最后一个元素,您可以
编写一个附加函数,将单个元素添加到 DOM,然后您将在循环和addTask
函数内部调用它(在这种情况下,您不会updateTaskList
从函数中调用该addTask
函数)
或者
从 DOM 中删除所有现有任务,然后添加更新列表的所有任务(就像您现在所做的那样)
推荐阅读
- html - Django 使用 AJAX 更新 HTML 表
- flutter - 如何在颤动中使用 web_socket_channel 监听来自 php MySQL 服务器的更改
- android - 如何使用 Kotlin 在 Activity 类之外的 Android 中获取文件
- reactjs - react hooks状态管理解决方案是否有redux-saga替代方案
- python - 如何将具有许多 python 文件的 python 项目和 main.py 的输入视频转换为单个可执行文件?
- python - python error could not install packages due to an environmenterror winerror 5 access is denied
- php - 使用 HTTP 403 重定向
- ios - 单击通过电子邮件收到的登录链接时,我收到无效的动态链接
- java - Spring注解@Validated在kotlin类中不起作用,相同的java代码起作用
- javascript - 从文本中删除一个字符