• 締切済み

バグの修正方法を教えて下さい!!

下記は、月日を指定すると、季節を表示すプログラムです。 プログラムはほぼ正常に実行出来ますが、9月を指定すると、 「秋」ではなく、7/8月の「海に行きましょう」というメッセージが出ます。 これはなぜでしょうか。ソースのどこが間違っているのでしょうか。 ご教示下さい。宜しくお願い致します。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS"> <title> Guess The Season! </title> </head> <form id= "seasons" action="javascript"> <body> <center> <h1>今は何の季節?</h1> <script type='text/javascript'> function seasons(){ var mo = document.getElementById('month'); var dt = document.getElementById('date'); mo_value=parseInt(mo.options[mo.selectedIndex].text); dt_value=parseInt(dt.options[dt.selectedIndex].text); if (mo_value==01 && dt_value>=01 && dt_value<=03){ confirm ("お正月"); } else if (mo_value==01 && dt_value>=04 && dt_value<=31){ confirm("冬です"); } else if (mo_value==02 && dt_value==29){ confirm("今年はうるう年です。現在の季節は冬です"); } else if ((mo_value==02) && (dt_value>=30) && (dt_value<= 31)){ confirm("二月には30日と31日はございません"); } else if (mo_value==02 && dt_value>=01 && dt_value<=28){ confirm("冬です"); } else if (mo_value>=03 && mo_value<=05) { confirm("春です"); } else if ((mo_value==09) && dt_value>=01 && dt_value<=31){ confirm("秋です"); } else if (mo_value==10 || mo_value==11){ confirm("秋です");<!--9月の季節は出ません--> } else if(mo_value==12 && dt_value>=01 && dt_value<=31) { confirm("冬です"); } else if (mo_value==06 || mo_value==07) { alert("夏です"); } else if (mo_value==08 && dt_value>=01 || dt_value<=15){ confirm("海に行きましょう"); } else if (mo_value==08 && dt_value>=16 || dt_value<=20){ confirm("お盆休みです"); } else if (mo_value==08 && dt_value>=21 || dt_value<=31){ confirm("海に行きましょう"); } } </script> <form onsubmit='return seasons()' > 【月】: <select id='month'> <option value>01</option> <option value>02</option> <option value>03</option> <option value>04</option> <option value>05</option> <option value>06</option> <option value>07</option> <option value>08</option> <option value>09</option> <option value>10</option> <option value>11</option> <option value>12</option> </select> <br>。 【日】: <select id='date'> <option value>01</option> <option value>02</option> <option value>03</option> <option value>04</option> <option value>05</option> <option value>06</option> <option value>07</option> <option value>08</option> <option value>09</option> <option value>10</option> <option value>11</option> <option value>12</option> <option value>13</option> <option value>14</option> <option value>15</option> <option value>16</option> <option value>17</option> <option value>18</option> <option value>19</option> <option value>20</option> <option value>21</option> <option value>22</option> <option value>23</option> <option value>24</option> <option value>25</option> <option value>26</option> <option value>27</option> <option value>28</option> <option value>29</option> <option value>30</option> <option value>31</option> </select> <br> <input type='button' onclick='seasons()' value='調べる'> </form> <body> </html>

みんなの回答

回答No.1

parseIntを自動認識させていることが原因のようです。 下記のように10進数であることを明記すれば大丈夫です。 mo_value=parseInt(mo.options[mo.selectedIndex].text, 10); dt_value=parseInt(dt.options[dt.selectedIndex].text, 10); #参考URLの受け売りですが...

参考URL:
http://www.b-s-c.co.jp/~moritake/oboegaki/h_js_clm03.html
masavi85
質問者

お礼

ご回答ありがとうございました!! とても役に立ちました。感謝しております。

関連するQ&A