###前提・実現したいこと
各選手の成績を2016年と2017年のぶんを並べて
2017年のほうが良くなっていれば緑色
そうじゃなければ黄色
でセルを塗るようにしたいです。
成績のデータはCSVのデータにして、読み込みます。
###発生している問題・エラーメッセージ
(1)alertを出さないと色が塗られない
CheckMokuhyoのところで成績を比較して色をつけるのですが
これの前にalertを入れないと色が塗られません。
alertを入れるとちゃんと動きます。
(2)堂上選手の安打数が緑になってしまう
堂上選手の2017年の安打数は、2016年より超少ないのに
セルの色が緑色になってしまいます…。
###該当のソースコード
2017年の成績「testdata2017.txt」
"0.269","56","2" "0.320","103","1" "0.280","52","2" "0.190","19","1"
2016年の成績「testdata2016.txt」
"0.216","36","3" "0.292","175","3" "0.226","28","0" "0.254","116","6"
HTML
1<div> 2 <table border="1" cellspacing="2" cellpadding="2"> 3 <thead> 4 <tr> 5 <th>氏名</th> 6 <th></th> 7 <th>打率</th> 8 <th>安打</th> 9 <th>本塁打</th> 10 </tr> 11 </thead> 12 <tbody> 13 <tr align="right"> 14 <td rowspan="2">藤井</td> 15 <td>2017年</td> 16 <td id="K001"></td> 17 <td id="K002"></td> 18 <td id="K003"></td> 19 </tr> 20 <tr align="right"> 21 <td>2016年</td> 22 <td id="K001m"></td> 23 <td id="K002m"></td> 24 <td id="K003m"></td> 25 </tr> 26 <tr align="right"> 27 <td rowspan="2">大島</td> 28 <td>2017年</td> 29 <td id="K101"></td> 30 <td id="K102"></td> 31 <td id="K103"></td> 32 </tr> 33 <tr align="right"> 34 <td>2016年</td> 35 <td id="K101m"></td> 36 <td id="K102m"></td> 37 <td id="K103m"></td> 38 </tr> 39 <tr align="right"> 40 <td rowspan="2">亀澤</td> 41 <td>2017年</td> 42 <td id="K201"></td> 43 <td id="K202"></td> 44 <td id="K203"></td> 45 </tr> 46 <tr align="right"> 47 <td>2016年</td> 48 <td id="K201m"></td> 49 <td id="K202m"></td> 50 <td id="K203m"></td> 51 </tr> 52 <tr align="right"> 53 <td rowspan="2">堂上</td> 54 <td>2017年</td> 55 <td id="K301"></td> 56 <td id="K302"></td> 57 <td id="K303"></td> 58 </tr> 59 <tr align="right"> 60 <td>2016年</td> 61 <td id="K301m"></td> 62 <td id="K302m"></td> 63 <td id="K303m"></td> 64 </tr> 65 </tbody> 66 </table> 67</div>
JavaScript
1 var mlist = ["01", "02", "03"]; 2 3 //ファイルからデータを受け取って整形して返す 4 var trimDataFromText = function(data) { 5 var trimedDatas = []; 6 var zdatas = data.split(/\r\n|\r|\n/); 7 for (var i = 0; i < zdatas.length; i++) { 8 var _tmp = []; 9 var zdatat = zdatas[i].split(','); 10 for (var j = 0; j < zdatat.length; j++) { 11 _tmp.push(zdatat[j].replace(/^\"|\"$/g, '')) 12 } 13 trimedDatas.push(_tmp); 14 } 15 return trimedDatas; 16 } 17 18 var z2017s; 19 var z2016s; 20 21 //2017ここから 22 $.ajax({ 23 url: '/URL/testdata2017.txt', 24 success: function(data) { 25 var zdatas = trimDataFromText(data); 26 z2017s = zdatas; 27 for (var i = 0; i < zdatas.length; i++) { 28 var zdata = zdatas[i]; 29 for (var j = 0; j < mlist.length; j++) { 30 $("#K" + i + mlist[j]).html(zdata[j]); 31 } 32 } 33 } 34 }); 35 36 //2016ここから 37 $.ajax({ 38 url: '/URL/testdata2016.txt', 39 success: function(data) { 40 var zdatas = trimDataFromText(data); 41 z2016s = zdatas; 42 for (var i = 0; i < zdatas.length; i++) { 43 var zdata = zdatas[i]; 44 for (var j = 0; j < mlist.length; j++) { 45 $("#K" + i + mlist[j] + "m").html(zdata[j]); 46 } 47 } 48 } 49 }); 50 51 52 //2017>2016なら緑、じゃなければ黄色 53 function CheckMokuhyo() { 54 55 for (var i = 0; i < 4; i++) { 56 var z2017 = z2017s[i]; 57 var z2016 = z2016s[i]; 58 for (var j = 0; j < mlist.length; j++) { 59 if (z2017[j] > z2016[j]) { 60 $("#K" + i + mlist[j]).css("background-color", "lightgreen"); 61 } else { 62 $("#K" + i + mlist[j]).css("background-color", "yellow"); 63 } 64 } 65 } 66 } 67 68 alert("なんらかのメッセージ"); 69 CheckMokuhyo();
###試したこと
たぶん、ajaxでcsvファイルを読むより前にCheckMokuhyoが実行されちゃうのが悪いのかな
という気がしたので
OKFlg(初期値は0)を作って
ajaxでファイルを読むところのsuccessのところで1ずつ足して
JavaScript
1 while (OKFlg < 2) { 2 //ここにVBScriptとかにあるsleepみたいなのが書きたいです… 3 } 4 CheckMokuhyo();
みたいにしたらいいのかな、と思って
とりあえずwhile (OKFlg < 2)の中にはconsole.logでなんか出すようにしたら
終了しなくなりました…。
###補足情報(言語/FW/ツール等のバージョンなど)
IE11です。(規則でこれしか使えないので)
Windowsは7と10半々くらいです。
SharePoint Foundation 2010の中で作っています。
まえに質問したときに
「SharePointの中でしたときとそうでないときとで動作が違う」
ということがあったので
今回はSharePointの外でもやってみて、やっぱりそうなるということも確認してみました。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/12 02:13