前提・実現したいこと
javascriptで作っています。
サイコロの出目結果を押すと、出目の欄の6行が100面のサイコロの数字結果がランダムで出てきます。
それに伴って、環境の行のセレクトが自動で動き、反映されます。
今はボタンを押すと、変更できますが、
これをforを使い、小3までや小4までと好きなように
制御できるようにしたいと思っていますが、
上手く設定できません。
問題の
出来ない理由ですが、関数を2つ(DiceRollとdeme1_change)使っており、
その中の『deme1_change』の数字が上手く変更できませんでした。
発生している問題・エラーメッセージ
//100の出目の結果を反映する ここをfor文にしたい。 function Dice_deme(){ document.form1.deme1.value = DiceRoll(100) ,deme1_change(); document.form1.deme2.value = DiceRoll(100) ,deme2_change(); document.form1.deme3.value = DiceRoll(100) ,deme3_change(); document.form1.deme4.value = DiceRoll(100) ,deme4_change(); }
該当のソースコード
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>SamPle</title> <script type="text/javascript"> <!-- function DiceRoll(number) { var dice1 = Math.floor(Math.random() * number) + 1; return dice1; } /*出目の環境が即時反映する。まとめ*/ //出目を環境に反映する function deme1_change(){ if(document.form1.deme1.value <= 10){ document.form1.kankyou1.selectedIndex = 1; } else if (document.form1.deme1.value <= 20){ document.form1.kankyou1.selectedIndex = 2; } else if (document.form1.deme1.value <= 30){ document.form1.kankyou1.selectedIndex = 3; } else if (document.form1.deme1.value <= 40){ document.form1.kankyou1.selectedIndex = 4; } else if (document.form1.deme1.value <= 50){ document.form1.kankyou1.selectedIndex = 5; } else if (document.form1.deme1.value <= 60){ document.form1.kankyou1.selectedIndex = 6; } else if (document.form1.deme1.value <= 70){ document.form1.kankyou1.selectedIndex = 7; } else if (document.form1.deme1.value <= 80){ document.form1.kankyou1.selectedIndex = 8; } else if (document.form1.deme1.value <= 90){ document.form1.kankyou1.selectedIndex = 9; } else if (document.form1.deme1.value <= 95){ document.form1.kankyou1.selectedIndex = 10; } else if (document.form1.deme1.value <= 100){ document.form1.kankyou1.selectedIndex = 11; } } //出目を環境に反映する function deme2_change(){ if(document.form1.deme2.value <= 10){ document.form1.kankyou2.selectedIndex = 1; } else if (document.form1.deme2.value <= 20){ document.form1.kankyou2.selectedIndex = 2; } else if (document.form1.deme2.value <= 30){ document.form1.kankyou2.selectedIndex = 3; } else if (document.form1.deme2.value <= 40){ document.form1.kankyou2.selectedIndex = 4; } else if (document.form1.deme2.value <= 50){ document.form1.kankyou2.selectedIndex = 5; } else if (document.form1.deme2.value <= 60){ document.form1.kankyou2.selectedIndex = 6; } else if (document.form1.deme2.value <= 70){ document.form1.kankyou2.selectedIndex = 7; } else if (document.form1.deme2.value <= 80){ document.form1.kankyou2.selectedIndex = 8; } else if (document.form1.deme2.value <= 90){ document.form1.kankyou2.selectedIndex = 9; } else if (document.form1.deme2.value <= 95){ document.form1.kankyou2.selectedIndex = 10; } else if (document.form1.deme2.value <= 100){ document.form1.kankyou2.selectedIndex = 11; } } //出目を環境に反映する function deme3_change(){ if(document.form1.deme3.value <= 10){ document.form1.kankyou3.selectedIndex = 1; } else if (document.form1.deme3.value <= 20){ document.form1.kankyou3.selectedIndex = 2; } else if (document.form1.deme3.value <= 30){ document.form1.kankyou3.selectedIndex = 3; } else if (document.form1.deme3.value <= 40){ document.form1.kankyou3.selectedIndex = 4; } else if (document.form1.deme3.value <= 50){ document.form1.kankyou3.selectedIndex = 5; } else if (document.form1.deme3.value <= 60){ document.form1.kankyou3.selectedIndex = 6; } else if (document.form1.deme3.value <= 70){ document.form1.kankyou3.selectedIndex = 7; } else if (document.form1.deme3.value <= 80){ document.form1.kankyou3.selectedIndex = 8; } else if (document.form1.deme3.value <= 90){ document.form1.kankyou3.selectedIndex = 9; } else if (document.form1.deme3.value <= 95){ document.form1.kankyou3.selectedIndex = 10; } else if (document.form1.deme3.value <= 100){ document.form1.kankyou3.selectedIndex = 11; } } //出目を環境に反映する function deme4_change(){ if(document.form1.deme4.value <= 10){ document.form1.kankyou4.selectedIndex = 1; } else if (document.form1.deme4.value <= 20){ document.form1.kankyou4.selectedIndex = 2; } else if (document.form1.deme4.value <= 30){ document.form1.kankyou4.selectedIndex = 3; } else if (document.form1.deme4.value <= 40){ document.form1.kankyou4.selectedIndex = 4; } else if (document.form1.deme4.value <= 50){ document.form1.kankyou4.selectedIndex = 5; } else if (document.form1.deme4.value <= 60){ document.form1.kankyou4.selectedIndex = 6; } else if (document.form1.deme4.value <= 70){ document.form1.kankyou4.selectedIndex = 7; } else if (document.form1.deme4.value <= 80){ document.form1.kankyou4.selectedIndex = 8; } else if (document.form1.deme4.value <= 90){ document.form1.kankyou4.selectedIndex = 9; } else if (document.form1.deme4.value <= 95){ document.form1.kankyou4.selectedIndex = 10; } else if (document.form1.deme4.value <= 100){ document.form1.kankyou4.selectedIndex = 11; } } //100の出目の結果を反映する ここをfor文にしたい。 function Dice_deme(){ document.form1.deme1.value = DiceRoll(100) ,deme1_change(); document.form1.deme2.value = DiceRoll(100) ,deme2_change(); document.form1.deme3.value = DiceRoll(100) ,deme3_change(); document.form1.deme4.value = DiceRoll(100) ,deme4_change(); } /*ここから試した結果です。 function Dice_deme(){ for(var i = 1; i <= 4; i++) { document.form1["deme" + i].value = DiceRoll(100) ,["deme" +i]_change(); } } function Dice_deme(){ for(var i = 1; i <= 4; i++) { document.form1["deme" + i].value = DiceRoll(100) ,deme+(i)_change(); } } function Dice_deme(){ for(var i = 1; i <= 4; i++) { document.form1["deme" + i].value = DiceRoll(100) ,deme+[i]_change(); } } function Dice_deme(){ for(var i = 1; i <= 4; i++) { document.form1["deme" + i].value = DiceRoll(100) ,["deme" +i + "_change()"]; } } //サイコロは動いた。引数化して一応動いた? []で合っている気はするんだけど? function Dice_deme(){ for(var i = 1; i <= 4; i++) { document.form1["deme" + i].value = DiceRoll(100) ,("deme" +i + "_change()"); } }kann */ //--> </script> </head> <body> <input type="button" value="サイコロの出目結果" onClick="Dice_deme()"> <form name="form1"> <table border="1"> <tr> <th>小学生</th> <th>環境</th> <th>出目</th> </tr> <tr> <th>小1</th> <th> <select name="kankyou1"> <option>▼選択してください。</option> <option>01~10 自然に囲まれて育った</option> <option>11~20 武道が得意</option> <option>21~30 国語が得意</option> <option>31~40 算数が得意</option> <option>41~50 理科が得意</option> <option>51~60 社会が得意</option> <option>61~70 音楽が得意</option> <option>71~80 図工が得意</option> <option>81~90 家庭科が得意</option> <option>91~95 外国に留学していた</option> <option>96~00 遊んでばかりいてわんぱく</option> </select> </th> <th><input id=deme1 name="deme1" type="text" value="0" oninput="deme1_change()" ></th> </tr> <tr> <th>小2</th> <th> <select name="kankyou2"> <option>▼選択してください。</option> <option>01~10 自然に囲まれて育った</option> <option>11~20 武道が得意</option> <option>21~30 国語が得意</option> <option>31~40 算数が得意</option> <option>41~50 理科が得意</option> <option>51~60 社会が得意</option> <option>61~70 音楽が得意</option> <option>71~80 図工が得意</option> <option>81~90 家庭科が得意</option> <option>91~95 外国に留学していた</option> <option>96~00 遊んでばかりいてわんぱく</option> </select> </th> <th><input id=deme2 name="deme2" type="text" value="0" oninput="deme2_change()" ></th> </tr> <tr> <th>小3</th> <th> <select name="kankyou3"> <option>▼選択してください。</option> <option>01~10 自然に囲まれて育った</option> <option>11~20 武道が得意</option> <option>21~30 国語が得意</option> <option>31~40 算数が得意</option> <option>41~50 理科が得意</option> <option>51~60 社会が得意</option> <option>61~70 音楽が得意</option> <option>71~80 図工が得意</option> <option>81~90 家庭科が得意</option> <option>91~95 外国に留学していた</option> <option>96~00 遊んでばかりいてわんぱく</option> </select> </th> <th><input id=deme3 name="deme3" type="text" value="0" oninput="deme3_change()" ></th> </tr> <tr> <th>小4</th> <th> <select name="kankyou4"> <option>▼選択してください。</option> <option>01~10 自然に囲まれて育った</option> <option>11~20 武道が得意</option> <option>21~30 国語が得意</option> <option>31~40 算数が得意</option> <option>41~50 理科が得意</option> <option>51~60 社会が得意</option> <option>61~70 音楽が得意</option> <option>71~80 図工が得意</option> <option>81~90 家庭科が得意</option> <option>91~95 外国に留学していた</option> <option>96~00 遊んでばかりいてわんぱく</option> </select> </th> <th><input id=deme4 name="deme4" type="text" value="0" oninput="deme4_change()" ></th> </tr> </table> </form> </body> </html>
試したこと
コメントアウトに試した結果を載せてみました。
関数をfor文で直そうとしていますが上手くいきませんでした。
まだ勉強したばかりで、ソースが長くなっており、、
また、前回と同じような質問となってしまい、申し訳ございませんが、よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー