前提・実現したいこと
javasctiptにて、単位変換表のようなものを作っているのですが、selectタグの中の選択肢option[num].valueで取得し、秒→分/時間/日という条件分岐にて計算を行うというものなのですが、秒→各単位がうまくいったので、また別に分→秒/時間/日の同じようなコードを下に連ねて書いた場合、[num]が被っているのか、うまくいきません。原因、及び対処法など教えていただければ嬉しいです。
発生している問題・エラーメッセージ
test2.html:73 Uncaught ReferenceError: num is not defined
該当のソースコード
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <h2>色々な単位変換</h2> <h1>時間</h1> <h1>秒</h1> <input type="text1" name="" id="text1"> <p>結果: <span id="span1"></span><span id="span2"></span></p> <form name="form1"> <select name="time"> <option value="min">分</option> <option value="hour">時</option> <option value="day">日</option> </select> </form> <input type="button" value="ボタン1" onclick="clickBtn1()"/> <script> function clickBtn1(){ let time = document.form1.time; let num = time.selectedIndex; let str = time.options[num].value; if (str == "min") { let text1 = document.getElementById("text1").value; let min1 = parseInt(60); let result = 1 / min1 * text1; document.getElementById("span1").textContent = result; document.getElementById("span2").textContent = "分" }else if (str == "hour") { let text1 = document.getElementById("text1").value; let hour1 = parseInt(3600); let result2 = 1 / hour1 * text1; document.getElementById("span1").textContent = result2; document.getElementById("span2").textContent = "時間" }else if (str == "day") { let text1 = document.getElementById("text1").value; let hour1 = parseInt(86400); let result3 = 1 / hour1 * text1; document.getElementById("span1").textContent = result3; document.getElementById("span2").textContent = "日" } } </script> <!-- ここから分 --> <h1>分</h1> <input type="text2" name="" id="text2"> <p>結果: <span id="span3"></span><span id="span4"></span></p> <form name="form2"> <select name="time2"> <option value="sec2">秒</option> <option value="hour2">時</option> <option value="day2">日</option> </select> </form> <input type="button" value="ボタン2" onclick="clickBtn2()"/> <script> function clickBtn2(){ let time2 = document.form2.time2; let num2 = time2.selectedIndex; let str2 = time2.options[num].value; if (str == "sec2") { let text2 = document.getElementById("text2").value; let sec2 = parseInt(60); let result4 = sec2 * text2; document.getElementById("span3").textContent = result4; document.getElementById("span4").textContent = "秒"; }else if (str == "hour2") { let text1 = document.getElementById("text1").value; let hour1 = parseInt(60); let result5 = 1 / hour1 * text1; document.getElementById("span3").textContent = result5; document.getElementById("span4").textContent = "時間" }else if (str == "day2") { let text1 = document.getElementById("text1").value; let hour1 = parseInt(1440); let result6 = 1 / hour1 * text1; document.getElementById("span3").textContent = result6; document.getElementById("span4").textContent = "日" } } </script> </body> </html>
試したこと
二つ目の[num]の中身を[num2]に変更しましたが、変化はありませんでした。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/13 11:26