前提・実現したいこと
チェックの入ったメンバーの名前を
表の行にAとBが混在しないように左から距離順に出力し
各行の余ったセルにHを出力したいです。
(例えば一行目の相乗り2までAの名前で埋め、相乗り3にはHを入れる)
どのようにすれば、実装できるのでしょうか。
言葉足らずな部分があるかと思いますが、お力添え願います。
該当のソースコード
HTML
1<table border="1" width="500" cellspacing="0" cellpadding="5" bordercolor="#333333"> 2 <tr> 3 <th>番長</th> 4 <th>相乗り1</th> 5 <th>相乗り2</th> 6 <th>相乗り3</th> 7 </tr> 8 9 <tr> 10 <td id="1st1"></td> 11 <td id="2nd1"></td> 12 <td id="3rd1"></td> 13 <td id="4th1"></td> 14 </tr> 15 16 <tr> 17 <td id="1st2"></td> 18 <td id="2nd2"></td> 19 <td id="3rd2"></td> 20 <td id="4th2"></td> 21 </tr> 22...以下同様 23 24 </table> 25<!-- メンバー追加フォーム --> 26 <form action="#" method="post"> 27 <p>名前:<br> 28 <input type="text" name="name"></p> 29 <p>ルート:<br> 30 <input type="text" name="root"></p> 31 <p>距離:<br> 32 <input type="text" name="distance"></p> 33 </form> 34 35 <button type="submit" value="追加">追加</button><br> 36 37 当日メンバー<br> 38 <label> 39 <input type="checkbox" name="member" data-distance=3 value="名前A3" data-root="a">名前A3 40 </label> 41 <label> 42 <input type="checkbox" name="member" data-distance=1 value="名前A1" data-root="a">名前A1 43 </label> 44 <label> 45 <input type="checkbox" name="member" data-distance=2 value="名前A2" data-root="a">名前A2 46 </label> 47 48 ...以下同様 49 50<button type="submit" value="go" id="go">決定</button>
javascript
1// 各セルのidを取得 2var first1 = document.getElementById('1st1'); 3var second1 = document.getElementById('2nd1'); 4var third1 = document.getElementById('3rd1'); 5var fourth1 = document.getElementById('4th1'); 6 7var first2 = document.getElementById('1st2'); 8var second2 = document.getElementById('2nd2'); 9var third2 = document.getElementById('3rd2'); 10var fourth2 = document.getElementById('4th2'); 11 12 13// 取得ボタン 14$('#go').on('click', function() { 15 let checked = [...document.querySelectorAll('input[name="member"]:checked')]; 16 console.log(checked) 17 18// グループごとに分ける 19 var $aGroup = $('[name="member"][data-root="a"]:checked') 20 console.log($aGroup); 21 var $bGroup = $('[name="member"][data-root="b"]:checked') 22 console.log($bGroup); 23 var $hGroup = $('[name="member"][data-root="h"]:checked') 24 console.log($hGroup); 25 26// 距離が遠い順にする 27var to = function(x,y){ 28 return $(x).data('distance')-$(y).data('distance'); 29 } 30 // 距離が近い順にする 31var from = function(x,y){ 32 return $(y).data('distance')-$(x).data('distance'); 33 } 34 35// 各グループのvalの呼び出し 36 var toA= $aGroup.get().sort(to).map(function(x){ 37 return $(x).val(); 38 }); 39 console.log(toA) 40 41 var toB= $bGroup.get().sort(to).map(function(x){ 42 return $(x).val(); 43 }); 44 console.log(toB) 45 var toH= $hGroup.get().sort(to).map(function(x){ 46 return $(x).val(); 47 }); 48 console.log(toH) 49 50// タクシーに初めに乗る人(番長)が入るセル 51 var $1st = $('[id^=1st]'); 52 console.log($1st); 53 54これ以降で例えば$1stにdata-root="a"のデータをもつ人を入れ、その場合 55それ以降、その行にはチェックの入ったdata-root="a"を持つ人の名前を挿入する。 56挿入後に同じ行のセルに空いているセルがあれば、data-root="h"の名前を挿入する。 57このような処理をしたいです。 58 59 60 });
試したこと
補足情報(FW/ツールのバージョンなど)
後から、メンバーを追加できるようにする予定です。
ここにより詳細な情報を記載してください。