こんにちは!
僕はHTML+JavaScriptを勉強し始めです。
今、テーブルに関する処理を上記のタイトルのように動作しようとしております。
そして、以下のように実装していますが、なかなか想定に一致しません。
実際結果は「ステータス」列にて値が変わりません。
但し、僕が期待した結果が「ステータス」列に「Pending」を表示してから、「NG、OKなど」に変更していきます。
以下のように実装してエラーが発生しませんが、期待のようにならないので、
どのように改善すればいいでしょうか。
上記の内容はLhankor_Mhy様の回答通り解決できました。
但し、以下の実装だと、「Pending」のステータスを見えなく、
「OK,NG」しか見えません。
期待したのはPendingを見てから各列を変更していくなので、どうすれば解決でしょうか。
まだ勉強中なので、キーワードを調べようとしますが、参照できるものだけでいいですが、解決方法を教えていただけますと幸いです。
html
1<!DOCTYPE html> 2<html> 3 <head> 4 <title>Datatable demo</title> 5 </head> 6 7 <body> 8 <textarea type="text" name="text_area" id="text_area"></textarea> 9 <table id="student-info-table"> 10 <thead> 11 <td>No</td> 12 <td>Name</td> 13 <td>Status</td> 14 </thead> 15 </table> 16 <div> 17 <button id="add-student-btn">Add</button> 18 </div> 19 </body> 20 21 <!-- Bootstrap --> 22 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous"> 23 <script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script> 24 <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script> 25 <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script> 26 27 <!-- DataTable --> 28 <link rel="stylesheet" href="https://cdn.datatables.net/1.10.22/css/jquery.dataTables.min.css"> 29 <script src="https://cdn.datatables.net/1.10.22/js/jquery.dataTables.min.js"></script> 30 <script src="./index.js"></script> 31</html>
index.jsは以下のようになっています。
javascript
1const table = $('#student-info-table').DataTable({ 2 columns: [ 3 {data: 'no'}, 4 {data: 'name'}, 5 {data: 'status'} 6 ] 7}); 8 9 10$("#add-student-btn").click(function() { 11 table.clear().draw() 12 let infoTextArea = document.getElementById("text_area").value.trim(); 13 let studentInfoList = new Array(); 14 infoTextArea = infoTextArea.split("\n"); 15 let studenNum = infoTextArea.length; 16 17 let i; 18 for ( i = 0; i < studenNum; i++) { 19 let name = infoTextArea[i]; 20 21 let studentInfo = { 22 "no": i, 23 "name": name, 24 "status": "pending" 25 }; 26 27 table.row.add(studentInfo).draw(); 28 studentInfoList.push(studentInfo); 29 } 30 for ( i = 0; i < studenNum; i++) { 31 // tại đây em muốn check từng tên rồi update kết quả status 32 let checkNameStudent = checkStudent(studentInfoList[i]) 33 table.row(i).data(checkNameStudent).draw(); 34 35 } 36 37}); 38 39 40function checkStudent(data) { 41 let studentName = data["name"]; 42 sleep(5000); 43 if (studentName == "Tommy") { 44 var rowData = { 45 "no": data["no"], 46 "name": data["name"], 47 "status": "OK-passed" 48 }; 49 } else { 50 var rowData = { 51 "no": data["no"], 52 "name": data["name"], 53 "status": "NG-failed" 54 }; 55 } 56 return rowData; 57} 58 59function sleep(milliseconds) { 60 var start = new Date().getTime(); 61 for (var i = 0; i < 1e7; i++) { 62 if ((new Date().getTime() - start) > milliseconds){ 63 break; 64 } 65 } 66}
ご教示していただけますと幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー