博客列表 >仿todolist案例

仿todolist案例

可不可以
可不可以原创
2020年08月27日 15:45:56778浏览

HTML部分

  1. <div class="todolist">
  2. <div class="header">
  3. <input type="text" placeholder="添加Todo" />
  4. <button>发布</button>
  5. </div>
  6. <div class="centent">
  7. <div>
  8. <h3 class="title">正在进行</h3>
  9. <ol></ol>
  10. </div>
  11. <div>
  12. <h3 class="title">已经完成</h3>
  13. <ul></ul>
  14. </div>
  15. </div>
  16. </div>

CSS部分

  1. body {
  2. background: #ccc;
  3. }
  4. ol,
  5. ul {
  6. padding: 0;
  7. margin: 0;
  8. }
  9. a {
  10. color: #000;
  11. text-decoration: none;
  12. }
  13. a:hover {
  14. color: #888;
  15. }
  16. li {
  17. position: relative;
  18. width: 300px;
  19. height: 30px;
  20. line-height: 30px;
  21. background: #fff;
  22. list-style: none;
  23. margin-top: 8px;
  24. }
  25. li > input {
  26. padding: 0;
  27. margin-left: 10px;
  28. }
  29. li > p {
  30. display: inline;
  31. margin-left: 6px;
  32. }
  33. li > a {
  34. position: absolute;
  35. right: 10px;
  36. }

JS部分

  1. $(function () {
  2. // 1.发布按钮
  3. $("button").on("click", function (ev) {
  4. //判断input的值是否为空
  5. if ($("input[type=text]").val() != 0) {
  6. //先获取本地数据,没有直接为空数组
  7. var data = getData();
  8. // console.log(data);
  9. data.push({ val: $(this).siblings().val(), checked: false });
  10. //存储数据
  11. saveData(data);
  12. }
  13. showData();
  14. });
  15. // 2.渲染页面---页面加载后就渲染一下数据
  16. showData();
  17. // 3.删除功能----用jquery的事件委托功能给a添加事件
  18. $("ol,ul").on("click", "a", function () {
  19. // alert($(this).parent().data("index"));
  20. //获取本地数据
  21. var data = getData();
  22. //删除数据
  23. data.splice($(this).parent().data("index"), 1);
  24. //把修改后的数据保存到本地数据中
  25. saveData(data);
  26. //重新渲染页面
  27. showData();
  28. });
  29. //4.勾选复选框后放入已完成任务中
  30. $("ol,ul").on("change", "input", function () {
  31. //获取本地数据
  32. var data = getData();
  33. //修改数据
  34. data[$(this).parent().data("index")].checked = $(this).prop("checked");
  35. //在保存到本地数据中
  36. saveData(data);
  37. //重新渲染页面
  38. showData();
  39. });
  40. /***************
  41. ****实现方法***
  42. ****************/
  43. //获取本地数据-----------------------
  44. function getData() {
  45. //拿到本地json字符串数据
  46. var data = localStorage.getItem("todolist");
  47. //
  48. if (data !== null) {
  49. return JSON.parse(data);
  50. } else {
  51. return [];
  52. }
  53. }
  54. //存储本地数据------------------------
  55. function saveData(data) {
  56. localStorage.setItem("todolist", JSON.stringify(data));
  57. }
  58. //渲染本地数据-----------------------
  59. function showData() {
  60. //获取本地数据
  61. var data = getData();
  62. //先清空ol原数据,不然数据会叠加
  63. $("ol,ul").empty();
  64. //遍历data
  65. $.each(data, function (key, value) {
  66. //先判断data.checked的值是什么进行添加
  67. if (!value.checked) {
  68. // 在ol元素添加,生成的li从上面追加 同时给li元素添加自定义属性
  69. $("ol").prepend(
  70. $(
  71. '<li data-index="' +
  72. key +
  73. '"><input type="checkbox" /><p>' +
  74. value.val +
  75. '</p><a href="javascript:;">删除</a></li>'
  76. )
  77. );
  78. } else {
  79. $("ul").prepend(
  80. $(
  81. '<li style="background-color:#eee" data-index="' +
  82. key +
  83. '"><input type="checkbox" checked/><p>' +
  84. value.val +
  85. '</p><a href="javascript:;">删除</a></li>'
  86. )
  87. );
  88. }
  89. });
  90. }
  91. });

演示

注意

这里使用了jQuery需要先引入,这里使用的是本地存储功能,需要实际使用可以异步连接数据库操作

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议