- ベストアンサー
JavaScriptで自動計算
JavaScriptを使って自動計算ができる方法を知りたく質問させていただきます。 計算タイプA・B・C・Dをセレクトボックスから選択 2~18をセレクトボックスで選択 ↓ 計算と書かれたボタンを押すことで計算 計算方法はセレクトボックスで 選択する数字を『n』とします。 『A』を選択した場合、 n(n-1) 『B』を選択した場合、 n(n-1)÷2 『C』を選択した場合、 n(n-1)(n-2) 『D』『5』を選択した場合、 n(n-1)(n-2)÷2 以上のようなものを作るにはどうしたら良いのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
<html> <select id="siki" onChange="keisan()"></select> <select id="num" onChange="keisan()"></select> <input type="text" id="kotae"> <script> var moji='馬単 馬連・枠連・ワイド 3連複 3連単'.split(" "); var kousiki='n*(n-1) n*(n-1)/2 n*(n-1)*(n-2) n*(n-1)*(n-2)/2'.split(" "); setSelectOption('siki',moji,kousiki); var numlist ="2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18".split(" "); setSelectOption('num',numlist,numlist); keisan(); function keisan(){ var n=document.getElementById('num').value-0; var k=eval(document.getElementById('siki').value); document.getElementById('kotae').value=k; } function setSelectOption(id_name ,text_array, value_array, default_value, select_value){ var o = document.getElementById( id_name ); if(!o) o = document.getElementsByName( id_name )[0]; while( o.hasChildNodes() ) o.removeChild( o.lastChild ); for(var i=0, n, mx = text_array.length; i<mx; i++){ var n = new Option( text_array[i], value_array[i],(default_value==value_array[i]),(select_value==value_array[i])); try{ o.add( n, null) } catch( ex ){ o.add( n ); } } } </script>
その他の回答 (1)
<html> <select id="siki" onChange="keisan()"></select> <select id="num" onChange="keisan()"></select> <input type="text" id="kotae"> <script> var kousiki='n*(n-1) n*(n-1)/2 n*(n-1)*(n-2) n*(n-1)*(n-2)/2'.split(" "); setSelectOption('siki',kousiki,kousiki); var numlist ="2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18".split(" "); setSelectOption('num',numlist,numlist); keisan(); function keisan(){ var n=document.getElementById('num').value-0; var k=eval(document.getElementById('siki').value); document.getElementById('kotae').value=k; } function setSelectOption(id_name ,text_array, value_array, default_value, select_value){ var o = document.getElementById( id_name ); if(!o) o = document.getElementsByName( id_name )[0]; while( o.hasChildNodes() ) o.removeChild( o.lastChild ); for(var i=0, n, mx = text_array.length; i<mx; i++){ var n = new Option( text_array[i], value_array[i],(default_value==value_array[i]),(select_value==value_array[i])); try{ o.add( n, null) } catch( ex ){ o.add( n ); } } } </script>
補足
早速の回答ありがとうございます。 計算方法を選択する際、式を見せるのではなく、言葉で表現したいのですが、どのように変更したら良いのでしょうか? 実際には馬券の組合せ数の計算に使いたいのです。 なので、 ・馬単 n(n-1) ・馬連・枠連・ワイド n(n-1)÷2 ・3連複 n(n-1)(n-2) ・3連単 n(n-1)(n-2)÷2 と表現したいのです。わかりにくい質問でもしわけ御座いません。
お礼
早速新しい回答ありがとうございます。 確認した所正常に動作いたしました。