javascript - 每次刷新我注册的页面,都会打印2次,如何解决?
问题描述
每次我刷新我注册的页面时,它都会打印 2 次。
const form = document.querySelector("#todo-form");
const todoInput = document.querySelector("#todo");
const addTodoBtn = document.querySelector(".btn.btn-danger");
const listGroup = document.querySelector(".list-group");
const removeBtn = document.querySelector("#clear-todos");
form.addEventListener("submit",addTodoToUI);
function addTodoToUI(e){
createTodoElement(todoInput.value);
e.preventDefault();
}
function createTodoElement(Name){
if(Name === ""){
}
else{
const elementLi = document.createElement("li");
elementLi.className = "list-group-item d-flex justify-content-between";
const txtNode = document.createTextNode(Name);
elementLi.appendChild(txtNode);
const elementA = document.createElement("a");
elementA.href = "#";
elementA.className = "delete-item";
elementA.innerHTML = "<i class = 'fa fa-remove'></i>";
elementLi.appendChild(elementA);
listGroup.appendChild(elementLi);
addTodoToStorage(Name);
}
}
function getTodosFromStorage(){
let todosArray;
if(localStorage.getItem("todos") === null){
todosArray = [];
}
else{
todosArray = JSON.parse(localStorage.getItem("todos"));
}
return todosArray;
}
function addTodoToStorage(todoName){
let todosArray = getTodosFromStorage();
todosArray.push(todoName);
localStorage.setItem("todos",JSON.stringify(todosArray));
}
document.addEventListener("DOMContentLoaded",addTodoFromStorage);
function addTodoFromStorage(){
let Array1 = getTodosFromStorage();
Array1.forEach(function (todo){
createTodoElement(todo);
});
}
解决方案
因为由于某种原因,您createTodoElement
在渲染时将项目添加到本地存储中addTodoToStorage(Name);
因此,您需要将渲染部分与添加新元素的部分分开。
推荐阅读
- python - Groupby 包含重复但也保留重复信息的列
- php - 在 Doctrine ArrayCollection 中获取给定项目
- python - 如何在 pytorch 中处理大型数据集
- c# - C# 是否有“三元式”异常处理?
- kotlin - 协程工作永远不会完成
- bash - 如何从字符串中提取或测试最后一个字段?
- javascript - 在事件函数中引用“this”,同时仍然能够删除事件 TypeScript
- java - 我没有收到奥利奥和上层的通知
- java - 使用 JNI 将数据从 Java 复制到 C++ 对象数组
- jasper-reports - jasper 报告:交叉表上的自定义列