[JavaScript] 初心者トレーニング「電卓」

2015/08/30

Javascript Tips テクノロジー プログラミング

t f B! P L
「エンジニアの仕事がしたい」という人から「プログラムを覚えたいけどどの言語がいいか?」という質問をよく受ける。 個人的には「C言語」と言いたいトコロだけど、最近の事情を考慮して「JavaScript」と答えている。 インタプリタとして、簡易に構築も出来るため、勉強するにはサーバーがなくても勉強ができるJavaScriptは プログラム初心者にはとてもいい言語と言えるでしょう。

色々な基本が盛り込まれている「電卓」

各種計算、表示、ボタンイベント、など、見栄えを良くしたければCSSも知っておく必要もあるが、 課題としてはとてもいいと思ってます。 とりあえず、プログラムも全て掲載しておきますが、是非初心者の人は、自分なりの電卓を企画して 構築してみてください。 例えば「関数電卓」や「メモリ機能付き」などのプログラムを作るとスキルもグッと向上すると思いますよ。

サンプル

電卓サンプルページ

画面イメージ

ソースコード

<html> <head> <title>calculator</title> <style> #calc{ -webkit-border-radius:8px; } table{ border-collapse:collapse; border:4px solid black; -webkit-border-radius:8px; } th,td{ text-align:center; border:1px solid black; width:40px; height:40px; } th:hover ,td:hover{ background-color:#FED; } th:active ,td:active{ background-color:#FAA; } th{ font-weight:normal; background-color:#DDF; } td{ } input{ width:100%; height:40px; border:0; background-color:#FFD; } .btn{ cursor:pointer; } </style> </head> <body> <div id='calc'> <table> <tr> <td colspan="3"><input type='text' id='total' readonly/></td> <th class='btn'>c</th> </tr> <tr> <td class='btn'>7</td> <td class='btn'>8</td> <td class='btn'>9</td> <th class='btn'>+</th> </tr> <tr> <td class='btn'>4</td> <td class='btn'>5</td> <td class='btn'>6</td> <th class='btn'>-</th> </tr> <tr> <td class='btn'>1</td> <td class='btn'>2</td> <td class='btn'>3</td> <th class='btn'>x</th> </tr> <tr> <td class='btn'>0</td> <th class='btn'>.</th> <th class='btn'>/</th> <th class='btn'>=</th> </tr> </table> </div> <script type='text/javascript'> var btn = document.getElementsByClassName("btn"); for(var i=0;i<btn .length;i++){ btn[i].onclick=function(){proc.click(this)}; } var proc={ data:{ num:0, mark:"" }, click:function(e){ var t = document.getElementById("total"); if(t==null){return} if(e.innerHTML==""){return} //数字 var k = e.innerHTML; if(k.match(/[0-9]/)){ if(this.data.mark=="="){ this.data.mark=""; this.data.num=0; t.value=""; } //数字の追記 t.value += k; //先頭の0をとる if(t.value=="00" || !t.value.match(/¥./)){ t.value = t.value *1; } } //ピリオド else if(k=="."){ //2回目の.は無視する if(!t.value.match(/¥./)){ //記号の追記 t.value += k; } } //クリア else if(k.match(/c/i)){ //表示のクリア t.value = ""; } //記号 else{ //+ if(this.data.mark=="+"){ this.data.num = this.data.num + (t.value*1); } //- else if(this.data.mark=="-"){ if(t.value==""){ if(this.data.mark=="="){ this.data.mark=""; this.data.num=0; t.value=""; } //マイナスの追記 t.value += k; } this.data.num = this.data.num - (t.value*1); } //* else if(this.data.mark=="*" || this.data.mark.match(/x/i)){ this.data.num = this.data.num * (t.value*1); } // / else if(this.data.mark=="/"){ if(t.value==0){ this.data.num = 0; } else{ this.data.num = this.data.num / (t.value*1); } } else{ this.data.num = (t.value*1); } //イコール if(k=="="){ t.value = this.data.num; } else{ //表示クリア t.value = ""; } //押された記号の記憶 this.data.mark = e.innerHTML; } } }; </script> </body> </html>
  • しみっち
    2015/08/30 at 22:06
    すごい! Javascript勉強するときは電卓作りからはじめます\(^o^)/

人気の投稿

このブログを検索

ごあいさつ

このWebサイトは、独自思考で我が道を行くユゲタの少し尖った思考のTechブログです。 毎日興味がどんどん切り替わるので、テーマはマルチになっています。 もしかしたらアイデアに困っている人の助けになるかもしれません。

ブログ アーカイブ