• ベストアンサー

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 以上のようなものを作るにはどうしたら良いのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#84373
noname#84373
回答No.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>

ryupyon
質問者

お礼

早速新しい回答ありがとうございます。 確認した所正常に動作いたしました。

その他の回答 (1)

noname#84373
noname#84373
回答No.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>

ryupyon
質問者

補足

早速の回答ありがとうございます。 計算方法を選択する際、式を見せるのではなく、言葉で表現したいのですが、どのように変更したら良いのでしょうか? 実際には馬券の組合せ数の計算に使いたいのです。 なので、 ・馬単 n(n-1) ・馬連・枠連・ワイド n(n-1)÷2 ・3連複 n(n-1)(n-2) ・3連単 n(n-1)(n-2)÷2 と表現したいのです。わかりにくい質問でもしわけ御座いません。

関連するQ&A