Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
我在 Typescript 中创建了一个 Todo 应用程序,并将 Todos 保存在本地存储中_创想鸟

我在 Typescript 中创建了一个 Todo 应用程序,并将 Todos 保存在本地存储中

我在 typescript 中创建了一个 todo 应用程序,并将 todos 保存在本地存储中

我们使用带有打字稿的普通 vite 项目来理解打字稿,并使用本地存储来存储待办事项。

                    vite + ts          

my todo list

<!--

my today todo

-->
.container{     max-width: 700px;     margin-inline: auto;     display: flex;     align-items: center;     justify-content: center;     flex-direction: column;}form #inputtodo{     padding: 8px 15px;}form #btnsubmit{     padding: 8px 15px;}.todos-container{     padding: 10px;     width: 100%;     width: fit-content;}.todo-item{     padding: 5px;     border: 1px solid gray;     gap: 20px;     width: 100%;     display: flex;     align-items: center;}.textcut{     text-decoration: line-through;}
interface Todo{     content: string,     isComplete: boolean,     readonly id:string}let todos:Todo[] = [];const todosContainer = document.querySelector('.todos-container')!;function genrateTodo(id: string, content:string, isComplete:boolean){     const itemContainer:HTMLDivElement = document.createElement('div');     itemContainer.classList.add('todo-item');     // checkbox     const checkbox: HTMLInputElement = document.createElement('input');     checkbox.type = "checkbox";     checkbox.checked = isComplete     checkbox.onchange = () => {          todos.find(todo => {               if(todo.id === id) todo.isComplete = checkbox.checked;               // save updated todo               localStorage.setItem('todos', JSON.stringify(todos));          })          todoText.className = checkbox.checked ? 'textCut' : '';     }     // paragraph content     const todoText:HTMLParagraphElement = document.createElement('p');     todoText.innerHTML = content;     todoText.className = isComplete ? 'textCut' : '';     // delete button     const btnDelete: HTMLButtonElement = document.createElement('button');     btnDelete.textContent = 'X';     btnDelete.onclick = () => {          todos = todos.filter(todo => todo.id !== id);          localStorage.setItem('todos', JSON.stringify(todos));          renderTodos(todos);     }     itemContainer.append(checkbox, todoText, btnDelete);     todosContainer.appendChild(itemContainer);}// add todoconst form = document.getElementById('myForm')!;form.onsubmit = (e: SubmitEvent) => {     e.preventDefault();     const inputElement = document.getElementById('inputTodo') as HTMLInputElement;     let value:string = inputElement.value;     const newTodo:Todo = {          id: String(Math.random() * 1000),          content: value,          isComplete: false     }     todos.push(newTodo);     inputElement.value = "";     localStorage.setItem('todos', JSON.stringify(todos));     renderTodos(todos);}function renderTodos(todos: Todo[]){     todosContainer.innerHTML = "";     todos.forEach(todo => {          genrateTodo(todo.id, todo.content, todo.isComplete);     })}const jsonTodos = localStorage.getItem('todos')!;const storedTodos : Todo[] = JSON.parse(jsonTodos);todos = storedTodos;renderTodos(todos);

以上就是我在 Typescript 中创建了一个 Todo 应用程序,并将 Todos 保存在本地存储中的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1629464.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
构建响应式导航栏
上一篇 2025年12月24日 12:31:20
如何在 HTML 和 CSS 中使 Div 居中?
下一篇 2025年12月24日 12:31:30

相关推荐

发表回复

登录后才能评论
关注微信