前提・実現したいこと
現在、jQueryを用いたToDoチェックリストのWebアプリ作成を行っております。
ToDoはテーブルに追加され、
要素は「タスク名」・「期限」・「優先度」・「備考欄」の4つで構成されてます。
タスク名と備考欄はテキストボックスから登録し、
優先度はラジオボタンで 高・中・低の3段階から選んだものを登録、
期限はdatepickerを用いて登録します。
登録したToDoはlocalStorageに保存され、
テーブルへの出力もlocalStorageから出力されます。
理想としては、ToDoは登録画面から登録され、
登録されたToDoは新しい順から5つテーブルに表示されることを
理想としています。
ソースコードはトップ画面・登録フォームのHTMLと、
登録フォームについてのjsです。
発生している問題
トップ画面にて登録したToDoを新着順に5つ表示するようにしたいのですが、うまくいきません。 登録したタスクの表示は出来ているのですが、 新着のタスクのみを表示されるのでなく、登録されたもの全てが 表示される状態です。
該当のソースコード
html
1//Top画面 2<!DOCTYPE html> 3<html lang="jp"> 4 <head> 5 <meta charset="UTF-8"> 6 <link rel="stylesheet" href="css/style.css"> 7 <title>ToDoリスト</title> 8 <h1 class="title">トップ</h1> 9 10 <script src="js/jquery.min.js"></script> 11 <link rel="stylesheet" href="css/jquery-ui.min.css"> 12 <script src="js/jquery-ui.min.js"></script> 13 <script src="js/underscore-min.js"></script> 14 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.1/js/jquery.tablesorter.min.js"></script> 15 16</head> 17 <body> 18 <form> 19 <h2>現在のTodoリスト</h2> 20 <table id ="toptable" class="tablesorter" border="1"> 21 <thead> 22 <tr> 23 <th>やるべきこと</th> 24 <th>期限</th> 25 <th>優先度</th> 26 <th>備考</th> 27 <th>-</th> 28 </tr> 29 </thead> 30 <tbody> 31 </tbody> 32 </table> 33 34 35<a href="./touroku.html"><button type="button" id="enter">タスクを登録する</button></a> 36 37<a href="./kakunin.html"><button type="button" id ="look" >タスクの確認</button></a> 38 39 </form> 40 <div id="wrap"></div> 41 <div id="mini-calendar"></div> 42 <script src="./js/jquery.minicalendar.js"></script> 43 <script src="./js/mini.js"></script> 44 <script src="./js/top.js"></script> 45 <script src="./js/touroku.js"></script> 46 <script src="./js/tablesorter.js"></script> 47 </body> 48</html>
html
1//登録画面 2<!DOCTYPE html> 3<html lang="jp"> 4<head> 5 <meta charset="UTF-8"> 6 <link rel="stylesheet" href="css/style.css"> 7 <title>ka</title> 8 <h1 class="title">タスクの登録</h1> 9 <script src="js/jquery.min.js"></script> 10 <link rel="stylesheet" href="css/jquery-ui.min.css"> 11 <script src="js/jquery-ui.min.js"></script> 12 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.tablesorter/2.31.1/js/jquery.tablesorter.min.js"></script> 13</head> 14 <body> 15 <form> 16 <p> <span class="example1">タスク内容</span></p> 17 <h1><input type="text" class="ent1" id="joint"></h1> 18 19 <p> <span class="example1">期限</span></p> 20 <h1><input type="text" class="ent2" id="datepicker"></h1> 21 <div id="radio"> 22 <p> <span class="example1">優先度</span></p> 23 <input type="radio" class="radio1" name="q2" value="高" checked> <span class="example2">高</span> 24 <input type="radio" class="radio1" name="q2" value="中"> <span class="example2">中</span> 25 <input type="radio" class="radio1" name="q2" value="低"> <span class="example2">低</span> 26 </div> 27 <p> <span class="example1">備考</span></p> 28 <h1><input type="text" class="ent3" id="joint2"></h1> 29 <button id="jointtask" class="jointtask" value="追加">追加</button> 30 <h2>タスク一覧</h2> 31 <table class="tablesorter" id ="toptable" border=""> 32 <thead> 33 <tr> 34 <th>やるべきこと</th> 35 <th>期限</th> 36 <th>優先度</th> 37 <th>備考</th> 38 <th>-</th> 39 </tr> 40 </thead> 41 <tbody> 42 </tbody> 43 </table> 44 45 <a href="./top.html"><button type="button">トップに戻る</button></a> 46 <button id="save" class="save" value="保存">保存</button> 47 </form> 48 <script src="./js/touroku.js"></script> 49 <script src="./js/top.js"></script> 50 <script src="./js/tablesorter.js"></script> 51 </body> 52</html>
js
1function getData(){ 2 joint = $('#joint').val(); 3 datepicker = $('#datepicker').val(); 4 radio = $('input[name=q2]:checked').val() 5 joint2 = $('#joint2').val(); 6 7} 8$(function(){ 9 $('#jointtask').click(function(){ 10 getData(); 11 var data = '<tr><td><div class="slide">' + joint + '</div></td><td><div class="slide datepicker">' + datepicker + '</div></td><td><div class="slide radio">' + radio + '</div></td><td><div class="slide joint2">' + joint2 + '</div></td><td><div class="slide joint2">' + '<input class="btnDelete" type="button" value="削除" onclick="btnDelete;" />' + '</div></td></tr>'; 12 localStorage.setItem(Data,data); 13 $('tbody').prepend(data); 14 }); 15}) 16 17$(window).on('load', function(){ 18 var table = 0; 19 for(Data in localStorage){ 20 table = localStorage.getItem(Data); 21 $('tbody').prepend(table); 22 } 23}); 24 25$('.btnDelete').on("click", function() { 26 $(this).parent().parent().remove(); 27 }); 28
試したこと
localstorageのデータをテーブルに出力する際、for文を使っているので、
for文に変数を追加したが、動作しなかった。
補足情報(FW/ツールのバージョンなど)
コード記述はVisual Studio Code 1.48.0を利用。
WebブラウザはChrome。