javascript - javascript中的待办事项列表
问题描述
我正在用 javascript 构建一个 Todo 应用程序,我面临 3 个问题:
1. 在勾选列表时在 input 元素上设置选中的属性。
<input type="checkbox" value="Go to Gym">
这个说法有错吗?
checkbox.checked = data.status;
2)使用会话存储数据。
if(sessionStorage['task'] != null)
3) 项目的状态(即选中或未选中)未能在 UpdateJSON 函数中的 dataJSON 对象中更新。
function updateJSON(event) {
let key = event.target.value;
dataJSON[key].status = event.target.checked;
sessionStorage['task'] = JSON.stringify(dataJSON);
}
var output = document.querySelector('#output'),
taskList = document.querySelector('#taskList'),
html = '',
dataJSON='';
document.querySelector('#myForm').addEventListener('submit', function(e) {
e.preventDefault();
var userInput = document.querySelector('input[name="task"]'),
tempValue = userInput.value;
console.log(tempValue);
userInput.value = '';
console.log(dataJSON);
addNewElement({"info": tempValue,"status": false})
});
//console.log(data);
window.onload = function(){
if(sessionStorage['taskList'] != null){
dataJSON = JSON.parse(sessionStorage['task']);
} else {
var data = '[{"info":"Cut Grass","status":true},{"info":"Clear Roo","status":false},{"info":"Go to Gym","status":true},{"info":"Make dinner","status":false}]';
dataJSON = JSON.parse(data);
}
buildCheckboxesData(dataJSON);
};
function addNewElement(data) {
addCheckbox(data, data.length);
dataJSON.push(data);
}
function addCheckbox(data, key) {
var li = document.createElement('li');
var checkbox = document.createElement('input');
var textNode = document.createTextNode(data.info);
checkbox.type = 'checkbox';
checkbox.value = data.info;
checkbox.checked = data.status;
checkbox.onchange = updateJSON;
li.appendChild(textNode);
li.appendChild(checkbox);
taskList.appendChild(li);
}
function buildCheckboxesData(data){
for(let key in data){
addCheckbox(data[key], key)
}
}
function updateJSON(event) {
let key = event.target.value;
dataJSON[key].status = event.target.checked;
sessionStorage['taskList'] = JSON.stringify(dataJSON);
}
<div id="output">
<ul id="taskList"></ul>
</div>
<form id="myForm" action="">
Task: <input type="text" name="task" placeholder="add task">
<button type="submit">Add new Task</button>
</form>
解决方案
推荐阅读
- c++ - 使用带有虚函数的类的构造函数进行大括号初始化
- ffmpeg - 我需要在 FFMpeg 中启用哪些编码器/解码器/复用器/解复用器/解析器/过滤器才能将 mp4 视频转换为 gif?
- c# - 如何在 .NET Core 库之间进行引用?
- xcode - 你在 Apple Developer Portal 中看到的 Xcode 的功能和 AppID 功能之间不应该存在 1-1 的关系吗?
- typescript - 对象中的打字稿泛型类
- sql - Teradata 查询优化
- ruby-on-rails - 如何在 Rails 中手动导致 ActiveRecord RecordInvalid
- java - 如何在 java 中打印以下结果?
- css - CSS 动画在 Firefox 上无法正常工作
- gcc - 如何在不运行内核的情况下调试内核代码?