初心者です。
この状態で3つのselectを変えていくのですが、1回目はちゃんとfunction change()が実行されconsoleに結果が出てきます。ですが2回目からはconsoleにUncaught TypeErrorが出てきてfunctionが見つからないと返されます。
エラーを調べても直せなかったため質問させていただくことにしました。
2回目でもエラーが出ないようにしたいです
ご教授願います。
html
1<table> 2 <tbody> 3 <form name="attack_g_d"> 4 <tr> 5 <td>ローマ字</td> 6 <td> 7 <select name="weapon" onchange="change()"> 8 <option value="0" selected>ローマ字</option> 9 <option value="0.1">A</option> 10 <option value="0.2">B</option> 11 </select> 12 </td> 13 </tr> 14 <tr> 15 <td>数値</td> 16 <td> 17 <label class="select-wrap"> 18 <select name="m_a_up" class="main" onchange="change()"> 19 <option value="0" selected>0</option> 20 </select> 21 </label> 22 . 23 <label class="select-wrap"> 24 <select name="s_a_up" class="sub" onchange="change()"> 25 <option value="0" selected>0</option> 26 </select> 27 </label> 28 </td> 29 </tr> 30 </form> 31 </tbody> 32 </table>
javascript
1wep_data = [ 2 ['A',28.0,0.1], 3 ['B',35.0,0.2], 4 ] 5function change() { 6 wep_name_val = document.attack_g_d.weapon.value; 7 main_a = document.attack_g_d.m_a_up.value; 8 sub_a = document.attack_g_d.s_a_up.value; 9 10 for (var i = 0; i < wep_data.length;) { 11 wep_val = wep_data[i][2]; 12 if (wep_name_val != wep_val) { 13 i++; 14 } else { 15 wep_name = wep_data[i][0]; 16 damage_o = wep_data[i][1]; 17 damage = damage_o.toFixed(1); 18 19 html_add = "\t" + '<tr>' + "\n"; 20 html_add += "\t" + '<td>' + wep_name + '</td>' + "\n"; 21 html_add += "\t" + '<td>' + damage + '</td>' + '\n'; 22 if (damage > 0) { 23 d_n = Math.ceil(100 / damage); 24 } else { 25 d_n = 0; 26 } 27 html_add += "\t" + '<td>' + d_n + '</td>' + '\n'; 28 attack_g = (main_a * 10) + (sub_a * 3); 29 g_d = ((0.99 * attack_g) - Math.pow((0.09 * attack_g), 2)) / 100; 30 z = 1 + g_d; 31 a_g_d = Math.floor((damage * z) * 1000) / 1000; 32 if (Math.ceil(100 / a_g_d) < Math.ceil(100 / damage) && damage < 100) { 33 max_a_g_d = 100 / (Math.ceil(100 / damage) - 1); 34 if (max_a_g_d == 25.0 || max_a_g_d == 50.0 || max_a_g_d == 100) { 35 max_a_g_d -= 0.1; 36 } 37 a_g_d = max_a_g_d.toFixed(1); 38 } 39 html_add += "\t" + '<td>' + a_g_d + '</td>' + '\n'; 40 41 html_add += "\t" + '</tr>'; 42 console.log(html_add); 43 44 break; 45 } 46 } 47} 48
回答2件
あなたの回答
tips
プレビュー