---------------------------------the HTML code is :---------------------
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Todo List App</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div id="page-wrapper">
<!-- Form for new Todo Items -->
<form id="new-todo-form" method="POST" action="#">
<input type="text" name="new-todo" id="new-todo" placeholder="Enter a todo item..." required>
<input type="submit" name="Submit"/>
</form>
<!-- Todo Item List -->
<ul id="todo-items"></ul>
</div>
<script src="db.js"></script>
<script src="app.js"></script>
</body>
</html>
-------------------------------and css is :---------------------------------
* { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; }
body, html {
padding: 0;
margin: 0;
}
body {
font-family: Helvetica, Arial, sans-serif;
color: #545454;
background: #F7F7F7;
}
#page-wrapper {
width: 550px;
margin: 2.5em auto;
background: #FFF;
box-shadow: 0 1px 3px rgba(0,0,0,0.2);
border-radius: 3px;
}
#new-todo-form {
padding: 0.5em;
background: #0088CC;
border-top-left-radius: 3px;
border-top-right-radius: 3px;
}
#new-todo {
width: 100%;
padding: 0.5em;
font-size: 1em;
border-radius: 3px;
border: 0;
}
#todo-items {
list-style: none;
padding: 0.5em 1em;
margin: 0;
}
#todo-items li {
font-size: 0.9em;
padding: 0.5em;
background: #FFF;
border-bottom: 1px solid #EEE;
margin: 0.5em 0;
}
input[type="checkbox"] {
margin-right: 10px;
}
-------------------------------db.js is :------------------------------------------------
/**
* @file A module for interacting with the DB.
* @author Matt West <matt.west@kojilabs.com>
* @license MIT {@link http://opensource.org/licenses/MIT}.
*/
var todoDB = (function() {
var tDB = {};
var datastore = null;
/**
* Open a connection to the datastore.
*/
tDB.open = function(callback) {
// Database version.
var version = 1;
// Open a connection to the datastore.
var request = indexedDB.open('todos', version);
// Handle datastore upgrades.
request.onupgradeneeded = function(e) {
var db = e.target.result;
e.target.transaction.onerror = tDB.onerror;
// Delete the old datastore.
if (db.objectStoreNames.contains('todo')) {
db.deleteObjectStore('todo');
}
// Create a new datastore.
var store = db.createObjectStore('todo', {
keyPath: 'timestamp'
});
};
// Handle successful datastore access.
request.onsuccess = function(e) {
// Get a reference to the DB.
datastore = e.target.result;
// Execute the callback.
callback();
};
// Handle errors when opening the datastore.
request.onerror = tDB.onerror;
};
/**
* Fetch all of the todo items in the datastore.
* @param {function} callback A function that will be executed once the items
* have been retrieved. Will be passed a param with
* an array of the todo items.
*/
tDB.fetchTodos = function(callback) {
var db = datastore;
var transaction = db.transaction(['todo'], 'readwrite');
var objStore = transaction.objectStore('todo');
var keyRange = IDBKeyRange.lowerBound(0);
var cursorRequest = objStore.openCursor(keyRange);
var todos = [];
transaction.oncomplete = function(e) {
// Execute the callback function.
callback(todos);
};
cursorRequest.onsuccess = function(e) {
var result = e.target.result;
if (!!result == false) {
return;
}
todos.push(result.value);
result.continue();
};
cursorRequest.onerror = tDB.onerror;
};
/**
* Create a new todo item.
* @param {string} text The todo item.
*/
tDB.createTodo = function(text, callback) {
// Get a reference to the db.
var db = datastore;
// Initiate a new transaction.
var transaction = db.transaction(['todo'], 'readwrite');
// Get the datastore.
var objStore = transaction.objectStore('todo');
// Create a timestamp for the todo item.
var timestamp = new Date().getTime();
// Create an object for the todo item.
var todo = {
'text': text,
'timestamp': timestamp
};
// Create the datastore request.
var request = objStore.put(todo);
// Handle a successful datastore put.
request.onsuccess = function(e) {
// Execute the callback function.
callback(todo);
};
// Handle errors.
request.onerror = tDB.onerror;
};
/**
* Delete a todo item.
* @param {int} id The timestamp (id) of the todo item to be deleted.
* @param {function} callback A callback function that will be executed if the
* delete is successful.
*/
tDB.deleteTodo = function(id, callback) {
var db = datastore;
var transaction = db.transaction(['todo'], 'readwrite');
var objStore = transaction.objectStore('todo');
var request = objStore.delete(id);
request.onsuccess = function(e) {
callback();
}
request.onerror = function(e) {
console.log(e);
}
};
// Export the tDB object.
return tDB;
}());
--------------------------app.js is ---------------------
/**
* @file The main logic for the Todo List App.
* @author Matt West <matt.west@kojilabs.com>
* @license MIT {@link http://opensource.org/licenses/MIT}.
*/
window.onload = function() {
// Display the todo items.
todoDB.open(refreshTodos);
// Get references to the form elements.
var newTodoForm = document.getElementById('new-todo-form');
var newTodoInput = document.getElementById('new-todo');
// Handle new todo item form submissions.
newTodoForm.onsubmit = function() {
// Get the todo text.
var text = newTodoInput.value;
// Check to make sure the text is not blank (or just spaces).
if (text.replace(/ /g,'') != '') {
// Create the todo item.
todoDB.createTodo(text, function(todo) {
refreshTodos();
});
}
// Reset the input field.
newTodoInput.value = '';
// Don't send the form.
return false;
};
}
// Update the list of todo items.
function refreshTodos() {
todoDB.fetchTodos(function(todos) {
var todoList = document.getElementById('todo-items');
todoList.innerHTML = '';
for(var i = 0; i < todos.length; i++) {
// Read the todo items backwards (most recent first).
var todo = todos[(todos.length - 1 - i)];
var li = document.createElement('li');
// var checkbox = document.createElement('input');
// checkbox.type = "checkbox";
// checkbox.className = "todo-checkbox";
// checkbox.setAttribute("data-id", todo.timestamp);
var deleteBtn = document.createElement('input');
deleteBtn.type = "button";
deleteBtn.value="This item is Done";
deleteBtn.className = "todo-deleteBtn";
deleteBtn.setAttribute("data-id-delete", todo.timestamp);
// li.appendChild(checkbox);
var span = document.createElement('span');
span.innerHTML = todo.text;
li.appendChild(span);
li.appendChild(deleteBtn);
todoList.appendChild(li);
// Setup an event listener for the checkbox.
// checkbox.addEventListener('click', function(e) {
// var id = parseInt(e.target.getAttribute('data-id'));
// //todoDB.deleteTodo(id, refreshTodos);
// });
// Setup an event listener for the button.
deleteBtn.addEventListener('click', function(e) {
var id = parseInt(e.target.getAttribute('data-id-delete'));
todoDB.deleteTodo(id, refreshTodos);
});
}
});
}
相关推荐
本项目"TODO List App Using JavaScript"旨在教你如何利用JavaScript来创建一个实用的待办事项应用程序。这个应用可以帮助用户管理日常任务,提高生产力。 【描述】:JavaScript作为前端开发的核心语言,提供了丰富...
**ReactJS Todo 应用与 IndexedDB** ReactJS 是一个流行的JavaScript库,用于构建用户界面,特别是单页应用程序(SPA)。它使用组件化的方式管理UI,使得开发更加模块化和可维护。在这个“reactjs_todo”项目中,...
微信小程序 todo list (源码)微信小程序 todo list (源码)微信小程序 todo list (源码)微信小程序 todo list (源码)微信小程序 todo list (源码)微信小程序 todo list (源码)微信小程序 todo list (源码)微信小程序 ...
小程序源码 todo list (代码+截图)小程序源码 todo list (代码+截图)小程序源码 todo list (代码+截图)小程序源码 todo list (代码+截图)小程序源码 todo list (代码+截图)小程序源码 todo list (代码+截图)小程序...
微信小程序源码 todo list(学习版)微信小程序源码 todo list(学习版)微信小程序源码 todo list(学习版)微信小程序源码 todo list(学习版)微信小程序源码 todo list(学习版)微信小程序源码 todo list(学习版)微信小...
Ract + IndexedDB,Todo应用 建立 npm install --global纱线 纱线-版本 yarn global添加create-react-app npx create-react-app app1 npm安装 npm install react-router-dom-保存 npm install axios-保存 npm ...
在本项目"Todo-app_使用React Native的简单待办事项.zip"中,我们将探讨如何使用React Native构建一个基本的待办事项(Todo)应用程序。React Native是一个由Facebook开发的开源框架,它允许开发者使用JavaScript和...
lovefield 是建立在 IndexedDB 上的关系查询引擎。它提供了类似 SQL 的语法,并且可以跨浏览器工作(目前支持 Chrome 37 及以上版本,Firefox 31 及以上版本,IE 10 及以上版本)。示例代码:<!doctype html> <...
在本文中,我们将深入探讨如何使用Express.js框架和MongoDB数据库构建一个简单的待办事项(Todo List)应用程序。Express是Node.js中广泛使用的web应用框架,而MongoDB则是一种流行的NoSQL数据库,非常适合处理JSON...
微信小程序——提醒录todo list(截图+源码).zip 微信小程序——提醒录todo list(截图+源码).zip 微信小程序——提醒录todo list(截图+源码).zip 微信小程序——提醒录todo list(截图+源码).zip 微信小程序...
项目:使用 JavaScript 编写的 ToDo List 应用程序及其源代码 ToDo List App 是一个使用 JavaScript、CSS 和 HTML 开发的简单项目。这个项目很有趣。在这里,用户可以添加待办事项详细信息的数量,您可以看到以列表...
微信小程序集成Redux实现的Todo list微信小程序集成Redux实现的Todo list
"微信小程序源码-todo list.zip" 是一个包含微信小程序的源代码资源,主要用于创建一个待办事项(Todo List)应用。这个压缩包中包含了必要的文件,帮助开发者理解并学习如何构建此类小程序。 源码分析: 1. **框架...
【标题】:“todo-app-main.rar”是一个压缩包文件,很可能包含了一个名为“todo-app-main”的项目源代码。从名称上看,这可能是一个待办事项应用的主要代码库。 【描述】:由于描述仅提供了文件名“todo-app-main....
【标题】"Todo-master"指的是一个开源的Todo应用的源代码项目,主要针对"TODO网站源码"和"TOdo源码"。这个项目可能是为了实现一个轻量级的任务管理工具,帮助用户方便地创建、管理和跟踪待办事项。"android"标签表明...
相比于传统的Web Storage(localStorage和sessionStorage),IndexedDB提供了更强大的数据管理能力,支持索引和复杂的查询操作,适用于需要高效访问大量数据的应用场景,如离线应用、数据缓存等。 首先,我们来看...
在Todo App中,CSS可以用于设置Todo项的背景色、边框、字体样式,以及按钮的样式等。通过CSS选择器,我们可以精确地控制各个元素的样式,实现一致且美观的界面设计。 3. **JavaScript**:JavaScript是实现网页动态...
path('', views.todo_list, name='todo_list'), path('add/', views.todo_add, name='todo_add'), ] ``` 同时,在项目的`urls.py`中,包含`todo`应用的URL配置: ```python from django.contrib import admin ...
网页应用-TODO-APP是一个基于Docker、Node.js、Express和React技术栈构建的可拖拽功能的项目。这个项目提供了便捷的任务管理功能,并且利用现代前端和后端技术来实现高效的应用开发和部署。 首先,Docker是容器化...
ToDo List.apk