本館粉絲專頁

使用者:Digipunk/團隊及個人投打統計:轉換工具:修訂版本之間的差異

分享此網頁到Facebook
分享此網頁到Plurk
分享此網頁到百度搜藏
分享此網頁到Twitter
分享此網頁到Del.icio.us
台灣棒球維基館
跳轉到: 導覽搜尋
第8行: 第8行:
 
* 複製、貼上時需留意欄位與值是否正確對應,尤其從 PDF 文件複製字串有時候會漏掉一些字。
 
* 複製、貼上時需留意欄位與值是否正確對應,尤其從 PDF 文件複製字串有時候會漏掉一些字。
 
* 建議複製後就直接先點擊一次「維基語法」按鈕,大致觀察其結果是否看似正常,不正常再回頭檢查哪些欄位或值有問題。
 
* 建議複製後就直接先點擊一次「維基語法」按鈕,大致觀察其結果是否看似正常,不正常再回頭檢查哪些欄位或值有問題。
 +
* 官網資料裡的局數若以 <tt>1/3</tt>、<tt>2/3</tt> 形式表達,需手動改成 <tt>.1</tt>、<tt>.2</tt> 再進行轉換。
 +
 +
* 欠缺的欄位自行手動補上,例如「打擊數據」裡沒 <tt>G/W</tt>,就眼睛瞄一下官網資料,手動在每隊後面加上。又例如「投球數據」沒有 <tt>FLD</tt>,一樣手動加上去就好了。
 +
 
===自動處理===
 
===自動處理===
 
* 明顯只是欄位名稱不同的情況,此程式會自動修正(在點擊「維基語法」按鈕時)。
 
* 明顯只是欄位名稱不同的情況,此程式會自動修正(在點擊「維基語法」按鈕時)。
第15行: 第19行:
 
:* 一方面可因應某些賽事沒有總和值的情況,例如 BFA、棒協的資料可能缺少此項數據。
 
:* 一方面可因應某些賽事沒有總和值的情況,例如 BFA、棒協的資料可能缺少此項數據。
 
:* 二方面可驗證官網呈現的總和值是否正確,例如 WBSC 的 <tt>IP</tt>(投球局數)總和從來都沒有正確過。
 
:* 二方面可驗證官網呈現的總和值是否正確,例如 WBSC 的 <tt>IP</tt>(投球局數)總和從來都沒有正確過。
* 特殊情況:
+
* 提醒事項:
 
:* 此處 <tt>FLD</tt>(守備率)資訊不完整,只能以取巧方式處理,無法 100% 精確,當作參考。若官網有值應以官網值為準,若官網無值就將近點用這裡的計算結果。
 
:* 此處 <tt>FLD</tt>(守備率)資訊不完整,只能以取巧方式處理,無法 100% 精確,當作參考。若官網有值應以官網值為準,若官網無值就將近點用這裡的計算結果。
 
:* 為使程式單純化,所有除法皆取至小數點後三位,但 WBSC <tt>ERA</tt>(防禦率)通常只顯示兩位,BFA 及棒協顯示三位,為使 WBSC 格式一致需手動再往前四捨五入一位。<BR>這情況一定會遇到,如果重新計算總和的結果與官網結果相同就不需處理,但 WBSC 的 <tt>IP</tt> 總和向來錯誤,所以它計算的 <tt>ERA</tt> 也必然不正確。
 
:* 為使程式單純化,所有除法皆取至小數點後三位,但 WBSC <tt>ERA</tt>(防禦率)通常只顯示兩位,BFA 及棒協顯示三位,為使 WBSC 格式一致需手動再往前四捨五入一位。<BR>這情況一定會遇到,如果重新計算總和的結果與官網結果相同就不需處理,但 WBSC 的 <tt>IP</tt> 總和向來錯誤,所以它計算的 <tt>ERA</tt> 也必然不正確。
 +
:* <tt>ERA</tt> 計算公式涉及該賽事正規局數。
  
 
===團隊打擊數據===
 
===團隊打擊數據===
第23行: 第28行:
 
{|BORDER="0" CELLSPACING="0" CELLPADDING="0" STYLE="width:100%;line-height:1.2;white-space:nowrap"
 
{|BORDER="0" CELLSPACING="0" CELLPADDING="0" STYLE="width:100%;line-height:1.2;white-space:nowrap"
 
|- STYLE="vertical-align:bottom"
 
|- STYLE="vertical-align:bottom"
|STYLE="text-align:right"|<SPAN CLASS="dgpk-btn" ID="bexam">▼顯示範例</SPAN>
+
|STYLE="text-align:right"|參考範例:<SPAN CLASS="__DGPK_EXAM__ dgpk-btn dgpk-btn-b">▼2017-WBSC-U18</SPAN> <SPAN CLASS="__DGPK_EXAM__ dgpk-btn dgpk-btn-b">▼2018-WBSC-U15</SPAN> <SPAN CLASS="__DGPK_EXAM__ dgpk-btn dgpk-btn-b">▼2018-BFA-U12</SPAN>
 
|}
 
|}
 
<DIV CLASS="dgpk-textarea" ID="bdata" STYLE="min-height:100px"></DIV>
 
<DIV CLASS="dgpk-textarea" ID="bdata" STYLE="min-height:100px"></DIV>
第39行: 第44行:
 
{|BORDER="0" CELLSPACING="0" CELLPADDING="0" STYLE="width:100%;line-height:1.2;white-space:nowrap"
 
{|BORDER="0" CELLSPACING="0" CELLPADDING="0" STYLE="width:100%;line-height:1.2;white-space:nowrap"
 
|- STYLE="vertical-align:bottom"
 
|- STYLE="vertical-align:bottom"
|STYLE="text-align:right"|<SPAN CLASS="dgpk-btn" ID="pexam">▼顯示範例</SPAN>
+
|STYLE="text-align:right"|參考範例:<SPAN DATA-STR="9" CLASS="__DGPK_EXAM__ dgpk-btn dgpk-btn-p">▼2017-WBSC-U18</SPAN> <SPAN DATA-STR="7" CLASS="__DGPK_EXAM__ dgpk-btn dgpk-btn-p">▼2018-WBSC-U15</SPAN> <SPAN DATA-STR="6" CLASS="__DGPK_EXAM__ dgpk-btn dgpk-btn-p">▼2018-BFA-U12</SPAN>
 
|}
 
|}
 
<DIV CLASS="dgpk-textarea" ID="pdata" STYLE="min-height:100px"></DIV>
 
<DIV CLASS="dgpk-textarea" ID="pdata" STYLE="min-height:100px"></DIV>
第45行: 第50行:
 
|- STYLE="vertical-align:bottom"
 
|- STYLE="vertical-align:bottom"
 
|STYLE="color:deeppink;font-family:Consolas,monospace" ID="pdscr"|
 
|STYLE="color:deeppink;font-family:Consolas,monospace" ID="pdscr"|
 +
|STYLE="width:1px;padding-right:20px" CLASS="innings" ID="s-pinnings"|
 
|STYLE="width:1px;padding-right:20px" CLASS="checkboxes" ID="c-pbest"|
 
|STYLE="width:1px;padding-right:20px" CLASS="checkboxes" ID="c-pbest"|
 
|STYLE="width:1px"| <SPAN CLASS="dgpk-btn" ID="pconv" STYLE="margin-top:10px">▼維基語法</SPAN>
 
|STYLE="width:1px"| <SPAN CLASS="dgpk-btn" ID="pconv" STYLE="margin-top:10px">▼維基語法</SPAN>
第58行: 第64行:
  
 
.checkboxes INPUT {margin:2px 0}
 
.checkboxes INPUT {margin:2px 0}
 +
.innings SELECT {font:8pt/1 Consolas,monospace}
 
</nowiki></DIV>
 
</nowiki></DIV>
  
第97行: 第104行:
  
 
   // event handlers
 
   // event handlers
  document.getElementById(x + 'exam').onclick = dgpk_exam;
 
 
   document.getElementById(x + 'conv').onclick = dgpk_conv;
 
   document.getElementById(x + 'conv').onclick = dgpk_conv;
 
   document.getElementById(x + 'data').onpaste = dgpk_pastedata;
 
   document.getElementById(x + 'data').onpaste = dgpk_pastedata;
 +
 
}
 
}
 +
 +
var BTN = document.getElementsByClassName('__DGPK_EXAM__');
 +
for (var i = 0; i < BTN.length; i++) {
 +
  BTN[i].onclick = dgpk_exam;
 +
}
 +
 +
var sel = '<TABLE CELLSPACING="0" CELLPADDING="0"><TR><TD>正規局數:</TD><TD><SELECT ID="pinnings">';
 +
for (var i = 5; i <= 9; i++) {
 +
  sel += '<OPTION VALUE="' + i + '"' + (i == 9 ? ' selected' : '') + '>' + i + '</OPTION>';
 +
}
 +
sel += '</SELECT></TD></TR></TABLE>';
 +
document.getElementById('s-pinnings').innerHTML = sel;
 +
  
 
//--------------------------
 
//--------------------------
第128行: 第148行:
 
   // normalize
 
   // normalize
 
   //------------------
 
   //------------------
   document.getElementById(x + 'data').innerText = document.getElementById(x + 'data').innerText.replace(/\r/g, '').replace(/\s*\n+\s*/g, '\n').replace(/TPE/g, 'ROC').trim().toUpperCase().replace(/(\s+)(BULK|BLK)(\s+)/g, '$1BK$3').replace(/(\s+)HP(\s+)/g, '$1HBP$2').replace(/(\s+)SLG%(\s+)/g, '$1SLG$2').replace(/(\s+)B\/AVG%(\s+)/g, '$1AVG$2').replace(/(\s+)(FLD%|FPCT)(\s+)/g, '$1FLD$3').replace(/(\s+)OB%(\s+)/g, '$1OBP$2').replace(/(\s+)IO\/TB(\s+)/g, '$1IO.TB$2').replace(/(\s+)B\/AVG(\s+)/g, '$1B.AVG$2').replace(/\//g, ' ').replace(/(\S+)-(\S+)/g, '$1 $2');
+
   document.getElementById(x + 'data').innerText = document.getElementById(x + 'data').innerText.replace(/\r/g, '').replace(/\s*\n+\s*/g, '\n').replace(/TPE/g, 'ROC').trim().toUpperCase().replace(/(\s+)(BULK|BLK)(\s+)/g, '$1BK$3').replace(/(\s+)HP(\s+)/g, '$1HBP$2').replace(/(\s+)SLG%(\s+)/g, '$1SLG$2').replace(/(\s+)B\/AVG%(\s+)/g, '$1AVG$2').replace(/(\s+)(FLD%|FPCT)(\s+)/g, '$1FLD$3').replace(/(\s+)OB%(\s+)/g, '$1OBP$2').replace(/(\s+)IO\/TB(\s+)/g, '$1IO.TB$2').replace(/(\s+)B\/AVG(\s+)/g, '$1B.AVG$2').replace(/(\S+)-(\S+)/g, '$1 $2');
 +
//.replace(/(\s*)\/(\s*)/g, '/') 這個再考慮看看,不處理好像也好
  
 
   // explode lines
 
   // explode lines
第288行: 第309行:
 
   } else {
 
   } else {
 
     if (!isNaN(retotal[xkeys[x].indexOf('ER')]) && !isNaN(retotal[xkeys[x].indexOf('IP')])) {
 
     if (!isNaN(retotal[xkeys[x].indexOf('ER')]) && !isNaN(retotal[xkeys[x].indexOf('IP')])) {
       tmpval1 = retotal[xkeys[x].indexOf('ER')] * 9;
+
       tmpval1 = retotal[xkeys[x].indexOf('ER')] * parseInt(document.getElementById('pinnings').value);
 
       tmpval2 = ip_a + ip_b * 2/3;
 
       tmpval2 = ip_a + ip_b * 2/3;
 
       if (tmpval2 > 0) {
 
       if (tmpval2 > 0) {
第439行: 第460行:
 
function dgpk_exam(event) {
 
function dgpk_exam(event) {
 
   var o = event.srcElement || event.target;
 
   var o = event.srcElement || event.target;
   var x = o.id.substr(0, 1);
+
   var x = o.className.substr(-1);
 
   var exam;
 
   var exam;
  
 
   if (x == 'b') {
 
   if (x == 'b') {
     exam = 'Player  Team    AB    R    H  2B  3B  HR  RBI    TB  AVG  SLG  OBP  OPS  BB HBP  SO GDP  SF  SH  SB  CS\n'
+
     switch (o.innerText.substr(1)) {
        + '-        USA  303  61  83  15  5  6  50  126  .274  .416  .377  .793  47  4  81  1  1  1  27  3\n'
+
    case '2017-WBSC-U18':
        + '-        KOR  290  68  73  15  3  6  64  112  .252  .386  .372  .758  53  4  64  3  2  9  12  7\n'
+
      exam = 'Player  Team    AB    R    H  2B  3B  HR  RBI    TB  AVG  SLG  OBP  OPS  BB HBP  SO GDP  SF  SH  SB  CS\n'
        + '-        JPN  299  52  75  13  0  3  41    97  .251  .324  .350  .674  43  6  69  5  6  9  16  6\n'
+
          + '-        USA  303  61  83  15  5  6  50  126  .274  .416  .377  .793  47  4  81  1  1  1  27  3\n'
        + '-        CAN  295  56  68  15  3  9  51  116  .231  .393  .367  .760  58  8  110  8  4  1  14  3\n'
+
          + '-        KOR  290  68  73  15  3  6  64  112  .252  .386  .372  .758  53  4  64  3  2  9  12  7\n'
        + '-        AUS  260  39  64  10  4  2  31    88  .246  .338  .350  .688  37  6  63  3  3  3  12  3\n'
+
          + '-        JPN  299  52  75  13  0  3  41    97  .251  .324  .350  .674  43  6  69  5  6  9  16  6\n'
        + '-        CUB  261  35  68    8  3  0  28    82  .261  .314  .340  .654  28  5  54  4  3  4    5  3\n'
+
          + '-        CAN  295  56  68  15  3  9  51  116  .231  .393  .367  .760  58  8  110  8  4  1  14  3\n'
        + '-        TPE  254  44  70    7  4  1  37    88  .276  .346  .409  .755  50  10  41  8  4  7    8  9\n'
+
          + '-        AUS  260  39  64  10  4  2  31    88  .246  .338  .350  .688  37  6  63  3  3  3  12  3\n'
        + '-        NED  248  39  54  13  1  2  29    75  .218  .302  .340  .642  41  5  75  4  0  3    4  0\n'
+
          + '-        CUB  261  35  68    8  3  0  28    82  .261  .314  .340  .654  28  5  54  4  3  4    5  3\n'
        + '-        ITA  246  26  50    7  2  3  23    70  .203  .285  .303  .588  29  7  72  2  2  2    9  6\n'
+
          + '-        TPE  254  44  70    7  4  1  37    88  .276  .346  .409  .755  50  10  41  8  4  7    8  9\n'
        + '-        NCA  272  44  77    7  4  3  39  101  .283  .371  .367  .738  26  12  56  10  3  1    8  2\n'
+
          + '-        NED  248  39  54  13  1  2  29    75  .218  .302  .340  .642  41  5  75  4  0  3    4  0\n'
        + '-        MEX  237  25  53  15  1  2  22    76  .224  .321  .311  .632  25  6  55  5  2  7    9  4\n'
+
          + '-        ITA  246  26  50    7  2  3  23    70  .203  .285  .303  .588  29  7  72  2  2  2    9  6\n'
        + '-        RSA  195    9  32    4  0  0    6    36  .164  .185  .249  .434  20  2  82  2  0  7    4  5\n'
+
          + '-        NCA  272  44  77    7  4  3  39  101  .283  .371  .367  .738  26  12  56  10  3  1    8  2\n'
        + 'Totals  -    3160  498  767  129  30  37  421  1067  .243  .338  .349  .687  457  75  822  55  30  54  128  51\n';
+
          + '-        MEX  237  25  53  15  1  2  22    76  .224  .321  .311  .632  25  6  55  5  2  7    9  4\n'
 +
          + '-        RSA  195    9  32    4  0  0    6    36  .164  .185  .249  .434  20  2  82  2  0  7    4  5\n'
 +
          + 'Totals  -    3160  498  767  129  30  37  421  1067  .243  .338  .349  .687  457  75  822  55  30  54  128  51\n';
 +
      break;
 +
 
 +
    case '2018-BFA-U12':
 +
      exam = 'TEAM G W PA AB RBI R AVG H 2B 3B HR TB SLG GDP SH SF BB HBP IO.TB OBP SO SB CS T.A PO A E FLD\n'
 +
          + 'ROC 6 6 186 160 52 71 0.444 71 26 10 6 135 0.844 0 8 2 10 6 0 0.468 18 16 1 2.798 91 24 2 0.983\n'
 +
          + 'KOR 6 4 159 134 26 38 0.284 38 15 4 0 61 0.455 0 0 2 13 10 0 0.384 37 12 3 3.865 96 21 6 0.951\n'
 +
          + 'JPN 6 4 176 137 50 66 0.372 51 15 4 2 80 0.584 0 1 2 34 2 0 0.494 18 44 1 2.826 83 21 3 0.972\n'
 +
          + 'PAK 6 2 130 117 13 24 0.222 26 7 1 0 35 0.299 0 0 1 10 2 0 0.292 45 28 2 2.780 83 16 19 0.839\n'
 +
          + 'HKG 5 3 119 95 15 22 0.221 21 1 1 0 24 0.253 0 1 1 19 1 2 0.350 43 23 2 2.865 83 26 13 0.893\n'
 +
          + 'INA 5 2 127 103 34 43 0.350 36 11 1 0 49 0.476 0 1 0 18 5 0 0.465 23 33 1 2.478 57 11 7 0.907\n'
 +
          + 'IND 5 1 106 92 9 21 0.217 20 1 1 0 23 0.250 0 0 0 10 4 0 0.321 36 28 1 1.833 66 16 15 0.845\n'
 +
          + 'LKA 5 0 112 90 13 17 0.256 23 4 0 0 27 0.300 0 0 0 19 3 0 0.402 42 31 6 7.060 60 21 21 0.794\n';
 +
      break;
 +
 
 +
    case '2018-WBSC-U15':
 +
      exam = 'TEAM AVG AB R H 2B 3B HR RBI TB SLG% BB HP SO GDP OB% SF SH SB-ATT G W\n'
 +
          + 'USA .314 220 88 69 17 5 3 71 105 .477 48 24 38 4 .470 8 4 17 20 9 8\n'
 +
          + 'PAN .265 223 52 59 16 4 1 45 86 .386 39 9 47 3 .392 2 8 15 18 9 7\n'
 +
          + 'ROC .303 234 47 71 19 2 1 41 97 .415 33 9 29 1 .404 4 8 9-11 9 6\n'
 +
          + 'JPN .311 235 68 73 10 4 2 60 97 .413 37 8 35 2 .417 3 7 18-20 9 5\n'
 +
          + 'CUB .295 193 49 57 7 4 1 39 75 .389 49 13 34 2 .463 2 7 14-21 8 5\n'
 +
          + 'DOM .310 226 56 70 24 1 6 44 114 .504 35 4 50 3 .405 4 1 9-12 8 4\n'
 +
          + 'BRA .277 202 46 56 13 2 0 40 73 .361 40 10 46 0 .419 1 4 6-8 8 5\n'
 +
          + 'NED .279 208 55 58 12 3 1 42 79 .380 38 5 52 1 .396 4 7 16-17 8 4\n'
 +
          + 'AUS .280 200 55 56 7 6 5 44 90 .450 53 12 46 2 .451 3 1 9-13 8 3\n'
 +
          + 'CHN .215 186 14 40 8 1 0 11 50 .269 17 6 49 3 .300 1 1 8-12 8 1\n'
 +
          + 'GER .176 176 17 31 4 3 0 11 41 .233 35 11 37 3 .347 0 6 9-11 8 1\n'
 +
          + 'RSA .158 165 16 26 5 1 0 12 33 .200 34 4 66 1 .314 1 2 2-7 8 1\n';
 +
      break;
 +
    }
 
   } else {
 
   } else {
     exam = 'Player  Team  W  L  ERA  APP  GS  SV  CG  SHO    IP    H    R  ER  BB  SO  2B  3B  HR    AB B/AVG  WP HBP  BK SFA SHA  GO  FO\n'
+
     switch (o.innerText.substr(1)) {
        + '-        USA  9  0  0.35  26  9  1  1    1  77.0  34    5    3  29  101    8  0  0  251  .135  3  2  0  1  3  82  35\n'
+
    case '2017-WBSC-U18':
        + '-        KOR  7  2  3.30  29  9  3  0    0  79.0  70  36  29  28  100  13  1  4  306  .229  2  6  0  3  1  72  56\n'
+
      exam = 'Player  Team  W  L  ERA  APP  GS  SV  CG  SHO    IP    H    R  ER  BB  SO  2B  3B  HR    AB B/AVG  WP HBP  BK SFA SHA  GO  FO\n'
        + '-        JPN  6  3  1.69  26  9  1  0    0  80.0  47  24  15  48  119    9  1  1  276  .170  11  4  2  1  7  65  45\n'
+
          + '-        USA  9  0  0.35  26  9  1  1    1  77.0  34    5    3  29  101    8  0  0  251  .135  3  2  0  1  3  82  35\n'
        + '-        CAN  5  4  4.33  26  9  3  0    0  79.0  72  50  38  53  63    7  1  6  300  .240  9  5  0  3  11  88  74\n'
+
          + '-        KOR  7  2  3.30  29  9  3  0    0  79.0  70  36  29  28  100  13  1  4  306  .229  2  6  0  3  1  72  56\n'
        + '-        AUS  4  4  2.67  25  8  1  2    1  67.1  74  32  20  23  56  13  0  5  268  .276  6  2  1  2  6  87  50\n'
+
          + '-        JPN  6  3  1.69  26  9  1  0    0  80.0  47  24  15  48  119    9  1  1  276  .170  11  4  2  1  7  65  45\n'
        + '-        CUB  3  5  4.66  21  8  1  0    0  65.2  72  42  34  28  70  10  3  0  262  .275  4  4  2  2  2  67  48\n'
+
          + '-        CAN  5  4  4.33  26  9  3  0    0  79.0  72  50  38  53  63    7  1  6  300  .240  9  5  0  3  11  88  74\n'
        + '-        TPE  6  2  2.96  24  8  2  0    0  73.0  51  26  24  35  84  10  2  7  261  .195  4  4  0  2  2  63  62\n'
+
          + '-        AUS  4  4  2.67  25  8  1  2    1  67.1  74  32  20  23  56  13  0  5  268  .276  6  2  1  2  6  87  50\n'
        + '-        NED  4  4  2.87  21  8  1  1    1  62.2  61  28  20  21  55  11  3  2  242  .252  4  3  0  0  5  54  65\n'
+
          + '-        CUB  3  5  4.66  21  8  1  0    0  65.2  72  42  34  28  70  10  3  0  262  .275  4  4  2  2  2  67  48\n'
        + '-        ITA  2  6  5.75  22  7  1  1    0  61.0  72  50  39  38  40  14  6  0  249  .289  10  6  0  4  8  74  60\n'
+
          + '-        TPE  6  2  2.96  24  8  2  0    0  73.0  51  26  24  35  84  10  2  7  261  .195  4  4  0  2  2  63  62\n'
        + '-        NCA  2  6  7.48  22  8  0  0    0  65.0  61  65  54  53  52  11  6  5  250  .244  9  7  5  3  5  79  55\n'
+
          + '-        NED  4  4  2.87  21  8  1  1    1  62.2  61  28  20  21  55  11  3  2  242  .252  4  3  0  0  5  54  65\n'
        + '-        MEX  2  6  5.43  24  8  0  0    0  64.2  66  49  39  50  50    5  2  1  246  .268  15  15  0  4  5  72  57\n'
+
          + '-        ITA  2  6  5.75  22  7  1  1    0  61.0  72  50  39  38  40  14  6  0  249  .289  10  6  0  4  8  74  60\n'
        + '-        RSA  0  8 10.59  19  8  0  2    0  52.2  86  88  62  43  32  18  5  5  245  .351  17  6  6  5  0  52  66\n'
+
          + '-        NCA  2  6  7.48  22  8  0  0    0  65.0  61  65  54  53  52  11  6  5  250  .244  9  7  5  3  5  79  55\n'
        + 'Totals  -    50  50  4.20  285  99  14  7    3  808.1  766  495  377  449  822  129  30  36  3156  .243  94  64  16  30  55 855 673\n';
+
          + '-        MEX  2  6  5.43  24  8  0  0    0  64.2  66  49  39  50  50    5  2  1  246  .268  15  15  0  4  5  72  57\n'
 +
          + '-        RSA  0  8 10.59  19  8  0  2    0  52.2  86  88  62  43  32  18  5  5  245  .351  17  6  6  5  0  52  66\n'
 +
          + 'Totals  -    50  50  4.20  285  99  14  7    3  808.1  766  495  377  449  822  129  30  36  3156  .243  94  64  16  30  55 855 673\n';
 +
      break;
 +
 
 +
    case '2018-BFA-U12':
 +
      exam = 'TEAM GS IP PA AB H HR BB HBP SO ERA WHIP WP BK R ER W L S H NB G FLD\n'
 +
          + 'ROC 6 31 117 100 10 0 14 2 40 0.968 0.774 6 0 7 5 6 0 1 0 411 19 0.983\n'
 +
          + 'KOR 6 32 132 109 15 0 17 3 48 1.125 1.000 13 1 10 6 4 2 1 0 535 19 0.951\n'
 +
          + 'JPN 6 28 123 97 19 1 17 6 41 2.786 1.286 5 0 15 13 4 2 0 0 477 15 0.972\n'
 +
          + 'PAK 6 27.2 160 125 33 0 25 8 46 6.506 2.096 10 2 42 30 2 4 0 0 602 16 0.839\n'
 +
          + 'HKG 5 27.2 141 120 37 0 13 6 32 4.337 1.807 9 2 29 20 3 2 1 0 509 16 0.893\n'
 +
          + 'INA 5 20 131 105 47 3 23 1 20 15.900 3.500 14 1 57 53 2 3 0 0 508 18 0.907\n'
 +
          + 'IND 5 22.1 150 129 60 0 15 4 25 12.896 3.358 10 4 63 48 1 4 0 0 545 20 0.845\n'
 +
          + 'LKA 5 21 161 143 65 4 9 3 10 13.143 3.524 12 1 79 46 0 5 0 0 481 17 0.794\n';
 +
      break;
 +
 
 +
    case '2018-WBSC-U15':
 +
      exam = 'TEAM ERA W-L SV IP G GS CG SHO H R ER BB SO 2B 3B HR AB B/Avg WP HP BK IBB SHA SFA FLD%\n'
 +
          + 'USA 1.09 8 1 1 58.0 9 9 0 0 36 13 9 34 53 10 0 0 206 .175 3 9 0 2 3 1 .954\n'
 +
          + 'PAN 2.22 7 2 4 60.0 9 9 0 0 32 23 19 33 55 5 1 1 207 .155 6 12 3 1 1 0 .961\n'
 +
          + 'ROC 3.98 6-3 4 58.0 9 9 0 0 63 37 33 30 49 10 2 0 222 .284 8 7 3 1 6 2 .968\n'
 +
          + 'JPN 4.27 5-4 2 59.0 9 9 0 0 54 42 36 34 70 14 2 2 219 .247 5 10 0 1 8 4 .965\n'
 +
          + 'CUB 3.24 5-3 1 54.0 8 8 0 0 53 33 24 22 53 8 3 2 207 .256 2 8 0 2 4 1 .979\n'
 +
          + 'DOM 5.94 4-4 0 53.0 8 8 1 0 51 54 45 49 37 6 4 1 197 .259 9 10 2 1 10 4 .913\n'
 +
          + 'BRA 3.08 5-3 1 50.0 8 8 1 0 31 28 22 38 44 1 0 0 174 .178 10 9 2 0 3 3 .941\n'
 +
          + 'NED 5.46 4-4 1 50.0 8 8 0 0 66 52 39 48 31 8 6 3 206 .320 6 8 2 1 4 0 .941\n'
 +
          + 'AUS 7.14 3-5 1 50.0 8 8 0 0 69 68 51 41 30 21 2 4 207 .333 7 7 1 1 5 3 .917\n'
 +
          + 'CHN 4.70 1-7 0 47.2 8 8 0 0 72 65 32 37 31 22 7 0 215 .335 11 13 0 1 6 7 .870\n'
 +
          + 'GER 6.70 1-7 0 46.0 8 8 0 0 63 61 44 32 49 21 2 2 200 .315 7 11 5 0 3 2 .917\n'
 +
          + 'RSA 11.43 1-7 0 45.1 8 8 0 0 76 87 74 60 27 16 7 5 208 .365 20 11 2 2 3 6 .884\n';
 +
      break;
 +
    }
 +
 
 +
    var innings = o.getAttribute('data-str');
 +
    if (innings && !isNaN(innings)) {
 +
      document.getElementById('pinnings').options.selectedIndex = parseInt(innings) - 5;
 +
    }
 
   }
 
   }
 +
 
   document.getElementById(x + 'data').innerHTML = exam;
 
   document.getElementById(x + 'data').innerHTML = exam;
 
   return false;
 
   return false;

2018年8月22日 (三) 18:04的修訂版本

目次

投打數據轉換

  • 直接用滑鼠複製官網投打數據並貼於本頁面裡的編輯區塊,即可轉換成 wiki 語法。
  • 貼進編輯區塊的第一列必須是欄位名稱,第二列開始每一欄便是它們的對應值(按照官網順序即可,不必如範例般對齊,也不必照輸出欄位的順序填)。
  • 一列是一筆記錄,欄位間以空格隔開。
  • 各官網使用的欄位名稱可能不同,例如投手犯規可能叫做 BKBLKBULK,遇上述情況需更改其名稱以符合此處欲產生的欄位(BK)。
  • 僅轉換所需欄位,用不到的欄位皆自動忽略。
  • 由於根據空格判斷欄位順序,遇人名包含空格時需手動拿掉空格或以暫時填入其它字元(例如 _)再進行轉換。
  • 複製、貼上時需留意欄位與值是否正確對應,尤其從 PDF 文件複製字串有時候會漏掉一些字。
  • 建議複製後就直接先點擊一次「維基語法」按鈕,大致觀察其結果是否看似正常,不正常再回頭檢查哪些欄位或值有問題。
  • 官網資料裡的局數若以 1/32/3 形式表達,需手動改成 .1.2 再進行轉換。
  • 欠缺的欄位自行手動補上,例如「打擊數據」裡沒 G/W,就眼睛瞄一下官網資料,手動在每隊後面加上。又例如「投球數據」沒有 FLD,一樣手動加上去就好了。

自動處理

  • 明顯只是欄位名稱不同的情況,此程式會自動修正(在點擊「維基語法」按鈕時)。
  • 包括我們想要是的 SB/CS,若官網欄位為 SB-ATT 也會自動相減求出 CS

重新計算總和

  • 程式會自動計算一次總和:
  • 一方面可因應某些賽事沒有總和值的情況,例如 BFA、棒協的資料可能缺少此項數據。
  • 二方面可驗證官網呈現的總和值是否正確,例如 WBSC 的 IP(投球局數)總和從來都沒有正確過。
  • 提醒事項:
  • 此處 FLD(守備率)資訊不完整,只能以取巧方式處理,無法 100% 精確,當作參考。若官網有值應以官網值為準,若官網無值就將近點用這裡的計算結果。
  • 為使程式單純化,所有除法皆取至小數點後三位,但 WBSC ERA(防禦率)通常只顯示兩位,BFA 及棒協顯示三位,為使 WBSC 格式一致需手動再往前四捨五入一位。
    這情況一定會遇到,如果重新計算總和的結果與官網結果相同就不需處理,但 WBSC 的 IP 總和向來錯誤,所以它計算的 ERA 也必然不正確。
  • ERA 計算公式涉及該賽事正規局數。

團隊打擊數據

參考範例:▼2017-WBSC-U18 ▼2018-WBSC-U15 ▼2018-BFA-U12
▼維基語法

團隊投球數據

參考範例:▼2017-WBSC-U18 ▼2018-WBSC-U15 ▼2018-BFA-U12
▼維基語法

CSS & JS

DIV.dgpk-textarea {background:#FFD;font:normal 8pt/1.2 Consolas,monospace,'Courier New';padding:4px 8px;border:1px solid black;white-space:pre-wrap} SPAN.dgpk-btn {display:inline-block;padding:1px 4px;border-radius:3px;border:1px solid black;background:#EEE;cursor:pointer;white-space:nowrap;margin:1px 0} SPAN.dgpk-btn:hover {background:#888;color:white} .checkboxes INPUT {margin:2px 0} .innings SELECT {font:8pt/1 Consolas,monospace}
var xkeys = { 'b': ['TEAM', 'G/W', 'AB', 'R', 'RBI', 'H', 'HR', 'TB', 'SO', 'BB', 'SB/CS', 'OBP', 'SLG', 'AVG'], 'p': ['TEAM', 'IP', 'AB', 'R', 'ER', 'H', 'HR', 'SO', 'BB', 'HBP', 'WP', 'BK', 'ERA', 'FLD'] }; var xidx = { 'b': {}, 'p': {} }; var xidx_special = { 'b': {'ATT':-1, 'HBP':-1, 'SF':-1}, 'p': {} }; var xbest = { 'b': { 'desc' : ['G/W', 'AB', 'R', 'RBI', 'H', 'HR', 'TB', 'BB', 'SB/CS', 'OBP', 'SLG', 'AVG'], 'asc' : ['SO'] }, 'p': { 'desc' : ['SO', 'FLD'], 'asc' : ['R', 'ER', 'H', 'HR', 'BB', 'HBP', 'WP', 'BK', 'ERA'] } }; for (var i = 0; i < 2; i++) { var x = i == 0 ? 'b' : 'p'; for (var z = 0, zz = xkeys[x].length; z < zz; z++) { var key = xkeys[x][z]; xidx[x][key] = -1; } document.getElementById(x + 'data').setAttribute('contenteditable', true); document.getElementById(x + 'dscr').innerHTML = 'TEAM: | ' + xkeys[x].slice(1).join(' || '); document.getElementById('c-' + x + 'best').innerHTML = '<TABLE CELLSPACING="0" CELLPADDING="0"><TR><TD><INPUT TYPE="checkbox" ID="' + x + 'best"></TD><TD><LABEL FOR="' + x + 'best">標示最佳值</TD></TR></TABLE></LABEL>'; // event handlers document.getElementById(x + 'conv').onclick = dgpk_conv; document.getElementById(x + 'data').onpaste = dgpk_pastedata; } var BTN = document.getElementsByClassName('__DGPK_EXAM__'); for (var i = 0; i < BTN.length; i++) { BTN[i].onclick = dgpk_exam; } var sel = '<TABLE CELLSPACING="0" CELLPADDING="0"><TR><TD>正規局數:</TD><TD><SELECT ID="pinnings">'; for (var i = 5; i <= 9; i++) { sel += '<OPTION VALUE="' + i + '"' + (i == 9 ? ' selected' : '') + '>' + i + '</OPTION>'; } sel += '</SELECT></TD></TR></TABLE>'; document.getElementById('s-pinnings').innerHTML = sel; //-------------------------- // functions //-------------------------- function dgpk_pastedata(ev) { var txt = (ev.originalEvent || ev).clipboardData.getData('text/html').trim(); txt = txt.replace(/<(\/?(html|body)|!--(Start|End)Fragment--)>/ig, ''); if (txt.indexOf('<') < 0 || txt.indexOf('>') < 0) { // plain text return true; } ev.preventDefault(); txt = txt.replace(/<\/tr>/ig, '~~~~').replace(/<\/t(h|d)>/ig, ' ').replace(/<\/?[^>]+>/g, '').replace(/\r?\n/g, '').replace(/(\s*~~~~\s*)+/g, '\n'); window.document.execCommand('insertText', false, txt); } function dgpk_conv(event) { var o = event.srcElement || event.target; var x = o.id.substr(0, 1); var num_cols = xkeys[x].length; var chk_best = document.getElementById(x + 'best').checked; //------------------ // normalize //------------------ document.getElementById(x + 'data').innerText = document.getElementById(x + 'data').innerText.replace(/\r/g, '').replace(/\s*\n+\s*/g, '\n').replace(/TPE/g, 'ROC').trim().toUpperCase().replace(/(\s+)(BULK|BLK)(\s+)/g, '$1BK$3').replace(/(\s+)HP(\s+)/g, '$1HBP$2').replace(/(\s+)SLG%(\s+)/g, '$1SLG$2').replace(/(\s+)B\/AVG%(\s+)/g, '$1AVG$2').replace(/(\s+)(FLD%|FPCT)(\s+)/g, '$1FLD$3').replace(/(\s+)OB%(\s+)/g, '$1OBP$2').replace(/(\s+)IO\/TB(\s+)/g, '$1IO.TB$2').replace(/(\s+)B\/AVG(\s+)/g, '$1B.AVG$2').replace(/(\S+)-(\S+)/g, '$1 $2'); //.replace(/(\s*)\/(\s*)/g, '/') 這個再考慮看看,不處理好像也好 // explode lines var LINES = document.getElementById(x + 'data').innerText.split(/\n+/); if (LINES.length < 2) return false; //------------------ // build index //------------------ var colnames = LINES[0].split(/\s+/); for (var col in xidx[x]) { var COL = col.split('/'); var IDX = []; for (var z = 0, zz = COL.length; z < zz; z++) { IDX[z] = -1; for (var j = 0, jj = colnames.length; j < jj; j++) { if (COL[z] == colnames[j]) { IDX[z] = j; break; } } } xidx[x][col] = IDX.join('/'); } // special columns for (var col in xidx_special[x]) { for (var j = 0, jj = colnames.length; j < jj; j++) { if (col == colnames[j]) { xidx_special[x][col] = j; break; } } } // collect values var total_line = -1; var RESULT = []; var SUM_SPECIAL = {}; for (var i = 1, ii = LINES.length; i < ii; i++) { var colval = LINES[i].split(/\s+/); var result = []; if (colval[0] == 'TOTALS' || colval[1] == 'TOTALS') { total_line = i; } for (var col in xidx[x]) { var IDX = xidx[x][col].split('/'); var VAL = []; for (var z = 0, zz = IDX.length; z < zz; z++) { var idx = IDX[z]; if (idx < 0) { if (col == 'SB/CS' && z == 1 && xidx_special[x].ATT >= 0 && colval[IDX[0]] && colval[xidx_special[x].ATT]) { VAL.push(parseInt(colval[xidx_special[x].ATT]) - parseInt(colval[IDX[0]])); } else { VAL.push('-'); } } else { if (col == 'ERA' || col == 'IP') { VAL.push(colval[idx] || '-'); } else { VAL.push((colval[idx] || '-').replace(/^0\./, '.')); } } } result.push(VAL.join('/')); } RESULT.push(result); // special values if (total_line == i) continue; for (var col in xidx_special[x]) { if (SUM_SPECIAL[col] == null) SUM_SPECIAL[col] = 0; var idx = xidx_special[x][col]; var val = colval[idx]; if (!isNaN(val)) { SUM_SPECIAL[col] += parseInt(val); } } } //------------------------------- // recalc_total //------------------------------- var retotal = []; var ip_a = 0; var ip_b = 0; var num_fld = 0; for (var i = 1; i < num_cols; i++) { retotal[i] = 'na'; var col = xkeys[x][i]; if (['AVG', 'OBP', 'SLG', 'ERA'].indexOf(col) >= 0) { continue; } var VAL = ['na', 'na']; for (var j = 0, jj = RESULT.length; j < jj; j++) { if (j == total_line - 1) continue; if (col == 'IP') { var val = RESULT[j][i].split('.'); if (!isNaN(val[0])) { ip_a += parseInt(val[0]); if (val.length > 1 && val[1] != '' && !isNaN(val[1])) { ip_b += parseInt(val[1]); } } } else { var val = RESULT[j][i].split('/'); if (!isNaN(val[0])) { if (VAL[0] == 'na') VAL[0] = 0; if (col == 'FLD') num_fld++; VAL[0] += parseFloat(val[0]); } if (val.length == 2) { if (!isNaN(val[1])) { if (VAL[1] == 'na') VAL[1] = 0; VAL[1] += parseFloat(val[1]); } } } } if (col == 'IP') { ip_a += Math.floor(ip_b / 3); ip_b %= 3; retotal[i] = ip_a + '.' + ip_b; } else { if (col.indexOf('/') < 0) { retotal[i] = VAL[0]; } else { retotal[i] = VAL[0] + '/' + VAL[1]; } } } var tmpval1, tmpval2; if (x == 'b') { if (!isNaN(retotal[xkeys[x].indexOf('TB')]) && !isNaN(retotal[xkeys[x].indexOf('AB')])) { tmpval1 = retotal[xkeys[x].indexOf('TB')]; tmpval2 = retotal[xkeys[x].indexOf('AB')]; if (tmpval2 > 0) { retotal[xkeys[x].indexOf('SLG')] = __dgpk_round3(tmpval1 / tmpval2); } } if (!isNaN(retotal[xkeys[x].indexOf('H')]) && !isNaN(retotal[xkeys[x].indexOf('AB')])) { tmpval1 = retotal[xkeys[x].indexOf('H')]; tmpval2 = retotal[xkeys[x].indexOf('AB')]; if (tmpval2 > 0) { retotal[xkeys[x].indexOf('AVG')] = __dgpk_round3(tmpval1 / tmpval2); } } if (!isNaN(retotal[xkeys[x].indexOf('H')]) && !isNaN(retotal[xkeys[x].indexOf('BB')]) && !isNaN(retotal[xkeys[x].indexOf('AB')]) && !isNaN(SUM_SPECIAL['HBP']) && !isNaN(SUM_SPECIAL['SF'])) { tmpval1 = retotal[xkeys[x].indexOf('H')] + retotal[xkeys[x].indexOf('BB')] + SUM_SPECIAL['HBP']; tmpval2 = retotal[xkeys[x].indexOf('AB')] + retotal[xkeys[x].indexOf('BB')] + SUM_SPECIAL['HBP'] + SUM_SPECIAL['SF']; if (tmpval2 > 0) { retotal[xkeys[x].indexOf('OBP')] = __dgpk_round3(tmpval1 / tmpval2); } } } else { if (!isNaN(retotal[xkeys[x].indexOf('ER')]) && !isNaN(retotal[xkeys[x].indexOf('IP')])) { tmpval1 = retotal[xkeys[x].indexOf('ER')] * parseInt(document.getElementById('pinnings').value); tmpval2 = ip_a + ip_b * 2/3; if (tmpval2 > 0) { retotal[xkeys[x].indexOf('ERA')] = __dgpk_round3(tmpval1 / tmpval2); } } if (!isNaN(retotal[xkeys[x].indexOf('FLD')])) { tmpval1 = retotal[xkeys[x].indexOf('FLD')]; tmpval2 = num_fld; if (tmpval2 > 0) { retotal[xkeys[x].indexOf('FLD')] = __dgpk_round3(tmpval1 / tmpval2); } } } //------------------------------- // post process //------------------------------- var idx, key, val; var BEST_VAL = {}; var BEST_CNT = {}; if (chk_best) { // phase 1 - find the best values for (var z = 0; z < num_cols; z++) { key = xkeys[x][z]; if (xbest[x].desc.indexOf(key) >= 0) { for (var i = 0, ii = RESULT.length; i < ii; i++) { if (i == total_line - 1) { continue; } val = RESULT[i][z].split('/')[0]; if (!isNaN(val)) { if (BEST_VAL[key] == null || parseFloat(val) > parseFloat(BEST_VAL[key])) { BEST_VAL[key] = val; BEST_CNT[key] = 1; } else if (parseFloat(val) == parseFloat(BEST_VAL[key])) { BEST_VAL[key] = val; BEST_CNT[key]++; } } } } else if (xbest[x].asc.indexOf(key) >= 0) { for (var i = 0, ii = RESULT.length; i < ii; i++) { if (RESULT[i][0] == 'Totals' || RESULT[i][1] == 'Totals') continue; val = RESULT[i][z].split('/')[0]; if (!isNaN(val)) { if (BEST_VAL[key] == null || parseFloat(val) < parseFloat(BEST_VAL[key])) { BEST_VAL[key] = val; BEST_CNT[key] = 1; } else if (parseFloat(val) == parseFloat(BEST_VAL[key])) { BEST_VAL[key] = val; BEST_CNT[key]++; } } } } } // phase 2 - class for best values and deal with the hidden values for SB/CS var cls = null; for (var z = 0; z < num_cols; z++) { key = xkeys[x][z]; for (var i = 0, ii = RESULT.length; i < ii; i++) { if (RESULT[i][0] == 'Totals' || RESULT[i][1] == 'Totals') continue; cls = ''; val = RESULT[i][z].split('/')[0]; if (!isNaN(val)) { if (parseFloat(val) == parseFloat(BEST_VAL[key])) { if (BEST_CNT[key] > 1) { cls = 'CLASS="best2"| '; } else { cls = 'CLASS="best"| '; } } if (key == 'SB/CS') { val = '&lt;S>' + (parseInt(val) < 10 ? '0' : '') + val + '&lt;/S>'; RESULT[i][z] = val + RESULT[i][z]; } RESULT[i][z] = cls + RESULT[i][z]; } } } } else { // !checked for (var z = 0; z < num_cols; z++) { key = xkeys[x][z]; if (key == 'SB/CS') { for (var i = 0, ii = RESULT.length; i < ii; i++) { if (i == total_line - 1) continue; val = RESULT[i][z].split('/')[0]; if (!isNaN(val)) { val = '&lt;S>' + (parseInt(val) < 10 ? '0' : '') + val + '&lt;/S>'; RESULT[i][z] = val + RESULT[i][z]; } } } } } //------------------------------- // output //------------------------------- result = ''; for (var i = 0, ii = RESULT.length; i < ii; i++) { if (xidx[x].TEAM >= 0) { if (i == total_line - 1) { result += '<SPAN STYLE="color:blue"><B>Totals</B></SPAN>'; } else { result += RESULT[i][0] == '-' ? '' : '<SPAN STYLE="color:blue"><B>' + RESULT[i][0] + '</B></SPAN>'; } result += '\n'; } result += (i == total_line - 1 ? '!' : '|') + ' '; result += RESULT[i].slice(1).join(' || '); result += '\n'; } result = result.replace(/\| CLASS="/g, '|CLASS="'); //------------------------------- // output recalc'd total //------------------------------- result += '<DIV STYLE="border-top:2px dashed #0A0;width:80%;height:0;margin-top:10px;padding-top:10px;font-weight:bold">'; result += '! '; result += retotal.slice(1).join(' || ').replace(/([\.0-9]+)/g, '<SPAN STYLE="color:#0A0">$1</SPAN>').replace(/na/g, '<SPAN STYLE="color:red">na</SPAN>'); result += '</DIV>'; result += '\n'; //document.getElementById(x + 'wiki').innerText = result; document.getElementById(x + 'wiki').innerHTML = result; return false; } function __dgpk_round3(n, d, zero) { if (d == null) d = 3; var fac = Math.pow(10, d); var val = '' + Math.round(n * fac) / fac; var mat = val.split('.'); val = mat[0] + '.' + ((mat[1] || '') + ('' + fac).substr(1)).substr(0, 3); if (!zero) { val = val.replace(/^0\./, '.'); } return val; } function dgpk_exam(event) { var o = event.srcElement || event.target; var x = o.className.substr(-1); var exam; if (x == 'b') { switch (o.innerText.substr(1)) { case '2017-WBSC-U18': exam = 'Player Team AB R H 2B 3B HR RBI TB AVG SLG OBP OPS BB HBP SO GDP SF SH SB CS\n' + '- USA 303 61 83 15 5 6 50 126 .274 .416 .377 .793 47 4 81 1 1 1 27 3\n' + '- KOR 290 68 73 15 3 6 64 112 .252 .386 .372 .758 53 4 64 3 2 9 12 7\n' + '- JPN 299 52 75 13 0 3 41 97 .251 .324 .350 .674 43 6 69 5 6 9 16 6\n' + '- CAN 295 56 68 15 3 9 51 116 .231 .393 .367 .760 58 8 110 8 4 1 14 3\n' + '- AUS 260 39 64 10 4 2 31 88 .246 .338 .350 .688 37 6 63 3 3 3 12 3\n' + '- CUB 261 35 68 8 3 0 28 82 .261 .314 .340 .654 28 5 54 4 3 4 5 3\n' + '- TPE 254 44 70 7 4 1 37 88 .276 .346 .409 .755 50 10 41 8 4 7 8 9\n' + '- NED 248 39 54 13 1 2 29 75 .218 .302 .340 .642 41 5 75 4 0 3 4 0\n' + '- ITA 246 26 50 7 2 3 23 70 .203 .285 .303 .588 29 7 72 2 2 2 9 6\n' + '- NCA 272 44 77 7 4 3 39 101 .283 .371 .367 .738 26 12 56 10 3 1 8 2\n' + '- MEX 237 25 53 15 1 2 22 76 .224 .321 .311 .632 25 6 55 5 2 7 9 4\n' + '- RSA 195 9 32 4 0 0 6 36 .164 .185 .249 .434 20 2 82 2 0 7 4 5\n' + 'Totals - 3160 498 767 129 30 37 421 1067 .243 .338 .349 .687 457 75 822 55 30 54 128 51\n'; break; case '2018-BFA-U12': exam = 'TEAM G W PA AB RBI R AVG H 2B 3B HR TB SLG GDP SH SF BB HBP IO.TB OBP SO SB CS T.A PO A E FLD\n' + 'ROC 6 6 186 160 52 71 0.444 71 26 10 6 135 0.844 0 8 2 10 6 0 0.468 18 16 1 2.798 91 24 2 0.983\n' + 'KOR 6 4 159 134 26 38 0.284 38 15 4 0 61 0.455 0 0 2 13 10 0 0.384 37 12 3 3.865 96 21 6 0.951\n' + 'JPN 6 4 176 137 50 66 0.372 51 15 4 2 80 0.584 0 1 2 34 2 0 0.494 18 44 1 2.826 83 21 3 0.972\n' + 'PAK 6 2 130 117 13 24 0.222 26 7 1 0 35 0.299 0 0 1 10 2 0 0.292 45 28 2 2.780 83 16 19 0.839\n' + 'HKG 5 3 119 95 15 22 0.221 21 1 1 0 24 0.253 0 1 1 19 1 2 0.350 43 23 2 2.865 83 26 13 0.893\n' + 'INA 5 2 127 103 34 43 0.350 36 11 1 0 49 0.476 0 1 0 18 5 0 0.465 23 33 1 2.478 57 11 7 0.907\n' + 'IND 5 1 106 92 9 21 0.217 20 1 1 0 23 0.250 0 0 0 10 4 0 0.321 36 28 1 1.833 66 16 15 0.845\n' + 'LKA 5 0 112 90 13 17 0.256 23 4 0 0 27 0.300 0 0 0 19 3 0 0.402 42 31 6 7.060 60 21 21 0.794\n'; break; case '2018-WBSC-U15': exam = 'TEAM AVG AB R H 2B 3B HR RBI TB SLG% BB HP SO GDP OB% SF SH SB-ATT G W\n' + 'USA .314 220 88 69 17 5 3 71 105 .477 48 24 38 4 .470 8 4 17 20 9 8\n' + 'PAN .265 223 52 59 16 4 1 45 86 .386 39 9 47 3 .392 2 8 15 18 9 7\n' + 'ROC .303 234 47 71 19 2 1 41 97 .415 33 9 29 1 .404 4 8 9-11 9 6\n' + 'JPN .311 235 68 73 10 4 2 60 97 .413 37 8 35 2 .417 3 7 18-20 9 5\n' + 'CUB .295 193 49 57 7 4 1 39 75 .389 49 13 34 2 .463 2 7 14-21 8 5\n' + 'DOM .310 226 56 70 24 1 6 44 114 .504 35 4 50 3 .405 4 1 9-12 8 4\n' + 'BRA .277 202 46 56 13 2 0 40 73 .361 40 10 46 0 .419 1 4 6-8 8 5\n' + 'NED .279 208 55 58 12 3 1 42 79 .380 38 5 52 1 .396 4 7 16-17 8 4\n' + 'AUS .280 200 55 56 7 6 5 44 90 .450 53 12 46 2 .451 3 1 9-13 8 3\n' + 'CHN .215 186 14 40 8 1 0 11 50 .269 17 6 49 3 .300 1 1 8-12 8 1\n' + 'GER .176 176 17 31 4 3 0 11 41 .233 35 11 37 3 .347 0 6 9-11 8 1\n' + 'RSA .158 165 16 26 5 1 0 12 33 .200 34 4 66 1 .314 1 2 2-7 8 1\n'; break; } } else { switch (o.innerText.substr(1)) { case '2017-WBSC-U18': exam = 'Player Team W L ERA APP GS SV CG SHO IP H R ER BB SO 2B 3B HR AB B/AVG WP HBP BK SFA SHA GO FO\n' + '- USA 9 0 0.35 26 9 1 1 1 77.0 34 5 3 29 101 8 0 0 251 .135 3 2 0 1 3 82 35\n' + '- KOR 7 2 3.30 29 9 3 0 0 79.0 70 36 29 28 100 13 1 4 306 .229 2 6 0 3 1 72 56\n' + '- JPN 6 3 1.69 26 9 1 0 0 80.0 47 24 15 48 119 9 1 1 276 .170 11 4 2 1 7 65 45\n' + '- CAN 5 4 4.33 26 9 3 0 0 79.0 72 50 38 53 63 7 1 6 300 .240 9 5 0 3 11 88 74\n' + '- AUS 4 4 2.67 25 8 1 2 1 67.1 74 32 20 23 56 13 0 5 268 .276 6 2 1 2 6 87 50\n' + '- CUB 3 5 4.66 21 8 1 0 0 65.2 72 42 34 28 70 10 3 0 262 .275 4 4 2 2 2 67 48\n' + '- TPE 6 2 2.96 24 8 2 0 0 73.0 51 26 24 35 84 10 2 7 261 .195 4 4 0 2 2 63 62\n' + '- NED 4 4 2.87 21 8 1 1 1 62.2 61 28 20 21 55 11 3 2 242 .252 4 3 0 0 5 54 65\n' + '- ITA 2 6 5.75 22 7 1 1 0 61.0 72 50 39 38 40 14 6 0 249 .289 10 6 0 4 8 74 60\n' + '- NCA 2 6 7.48 22 8 0 0 0 65.0 61 65 54 53 52 11 6 5 250 .244 9 7 5 3 5 79 55\n' + '- MEX 2 6 5.43 24 8 0 0 0 64.2 66 49 39 50 50 5 2 1 246 .268 15 15 0 4 5 72 57\n' + '- RSA 0 8 10.59 19 8 0 2 0 52.2 86 88 62 43 32 18 5 5 245 .351 17 6 6 5 0 52 66\n' + 'Totals - 50 50 4.20 285 99 14 7 3 808.1 766 495 377 449 822 129 30 36 3156 .243 94 64 16 30 55 855 673\n'; break; case '2018-BFA-U12': exam = 'TEAM GS IP PA AB H HR BB HBP SO ERA WHIP WP BK R ER W L S H NB G FLD\n' + 'ROC 6 31 117 100 10 0 14 2 40 0.968 0.774 6 0 7 5 6 0 1 0 411 19 0.983\n' + 'KOR 6 32 132 109 15 0 17 3 48 1.125 1.000 13 1 10 6 4 2 1 0 535 19 0.951\n' + 'JPN 6 28 123 97 19 1 17 6 41 2.786 1.286 5 0 15 13 4 2 0 0 477 15 0.972\n' + 'PAK 6 27.2 160 125 33 0 25 8 46 6.506 2.096 10 2 42 30 2 4 0 0 602 16 0.839\n' + 'HKG 5 27.2 141 120 37 0 13 6 32 4.337 1.807 9 2 29 20 3 2 1 0 509 16 0.893\n' + 'INA 5 20 131 105 47 3 23 1 20 15.900 3.500 14 1 57 53 2 3 0 0 508 18 0.907\n' + 'IND 5 22.1 150 129 60 0 15 4 25 12.896 3.358 10 4 63 48 1 4 0 0 545 20 0.845\n' + 'LKA 5 21 161 143 65 4 9 3 10 13.143 3.524 12 1 79 46 0 5 0 0 481 17 0.794\n'; break; case '2018-WBSC-U15': exam = 'TEAM ERA W-L SV IP G GS CG SHO H R ER BB SO 2B 3B HR AB B/Avg WP HP BK IBB SHA SFA FLD%\n' + 'USA 1.09 8 1 1 58.0 9 9 0 0 36 13 9 34 53 10 0 0 206 .175 3 9 0 2 3 1 .954\n' + 'PAN 2.22 7 2 4 60.0 9 9 0 0 32 23 19 33 55 5 1 1 207 .155 6 12 3 1 1 0 .961\n' + 'ROC 3.98 6-3 4 58.0 9 9 0 0 63 37 33 30 49 10 2 0 222 .284 8 7 3 1 6 2 .968\n' + 'JPN 4.27 5-4 2 59.0 9 9 0 0 54 42 36 34 70 14 2 2 219 .247 5 10 0 1 8 4 .965\n' + 'CUB 3.24 5-3 1 54.0 8 8 0 0 53 33 24 22 53 8 3 2 207 .256 2 8 0 2 4 1 .979\n' + 'DOM 5.94 4-4 0 53.0 8 8 1 0 51 54 45 49 37 6 4 1 197 .259 9 10 2 1 10 4 .913\n' + 'BRA 3.08 5-3 1 50.0 8 8 1 0 31 28 22 38 44 1 0 0 174 .178 10 9 2 0 3 3 .941\n' + 'NED 5.46 4-4 1 50.0 8 8 0 0 66 52 39 48 31 8 6 3 206 .320 6 8 2 1 4 0 .941\n' + 'AUS 7.14 3-5 1 50.0 8 8 0 0 69 68 51 41 30 21 2 4 207 .333 7 7 1 1 5 3 .917\n' + 'CHN 4.70 1-7 0 47.2 8 8 0 0 72 65 32 37 31 22 7 0 215 .335 11 13 0 1 6 7 .870\n' + 'GER 6.70 1-7 0 46.0 8 8 0 0 63 61 44 32 49 21 2 2 200 .315 7 11 5 0 3 2 .917\n' + 'RSA 11.43 1-7 0 45.1 8 8 0 0 76 87 74 60 27 16 7 5 208 .365 20 11 2 2 3 6 .884\n'; break; } var innings = o.getAttribute('data-str'); if (innings && !isNaN(innings)) { document.getElementById('pinnings').options.selectedIndex = parseInt(innings) - 5; } } document.getElementById(x + 'data').innerHTML = exam; return false; }

開發記錄

  • [2018-08-14] 建立頁面。先具備大致功能,之後實際應用時再邊用邊改,走一步算一步。
  • [2018-08-22] 此程式後續功能疊床架屋,越寫越亂,也覺得最初使用的結構與流程不好,日後維護有相當難度,最好是不必再改了。