電卓をjavascriptで機能させたく、イコールの機能を作成しているのですが
参考サイトとと違いcボタンを作成したところ、イコールで表示されるのが
前に入力された数字になってしまいます。
html
1<!DOCTYPE HTML> 2<html> 3<head> 4<meta charset="utf-8"> 5<title>電卓</title> 6</head> 7<body> 8<h1>電卓</h1> 9<hr> 10 11<form name="name"> 12<th colspan="3" align="right"><div id="out">0</div></th> 13<th><div id="type"></div></th> 14 15</form> 16 17<form name="den"> 18<table boder="2"> 19 20<tb><input type="button" value="7" onClick="den_run(7)"></tb> 21<tb><input type="button" value="8" onClick="den_run(8)"></tb> 22<tb><input type="button" value="9" onClick="den_run(9)"></tb> 23<br> 24<tb><input type="button" value="4" onClick="den_run(4)"></tb> 25<tb><input type="button" value="5" onClick="den_run(5)"></tb> 26<tb><input type="button" value="6" onClick="den_run(6)"></tb> 27<br> 28<tb><input type="button" value="1" onClick="den_run(1)"></tb> 29<tb><input type="button" value="2" onClick="den_run(2)"></tb> 30<tb><input type="button" value="3" onClick="den_run(3)"></tb> 31<br> 32<tb><input type="button" value="0" onClick="den_run(0)"></tb> 33<tb><input type="button" value="+" onClick="den_run('+')"></tb> 34<tb><input type="button" value="-" onClick="den_run('-')"></tb> 35<br> 36<tb><input type="button" value="*" onClick="den_run('*')"></tb> 37<tb><input type="button" value="/" onClick="den_run('/')"></tb> 38<tb><input type="button" value="C" onClick="den_clear('C')"></tb> 39<br> 40<tb><input type="button" value="・" onClick="den_period('.')"></tb> 41<tb><input type="button" value="=" onClick="den_equal('=')"></tb> 42 </table> 43</form> 44 45
javascript
1<script language="javascript"> 2ans = 0; //計算中の数字 3num = "0"; //押された数字キーを順番に表示 4Key = ""; //1つ前に押されたキーの記録 5kigou = ""; //数字かいくつか押された後記号キーの把握 6 7 8function den_run(btn) { //変数btnでキーからの情報を受けとる 9 if(!isNaN(btn)){ //数値か記号かで分岐 10 if(kigou == "=") { 11 ans = 0; 12 kigou = ""; 13 } 14 if(!isNaN(Key)) { //前に押されたキーは 15 if (num == "0") { //numが0の時 16 num = ""+btn; //キーからの情報 17 } else { 18 19 num += ""+btn; //真 連続して数字が押された場合 20 } 21 } else { 22 num = ""+btn; //偽 記号の後数字、数値を文字列 23 } 24 document.getElementById("out").innerHTML = num; //outの中身をnumへ 25 }else{ 26 if(!isNaN(Key)) { 27 ans = eval(ans + kigou + num); 28 num = "0"; 29 document.getElementById("out").innerHTML = ans; 30 } 31 kigou = btn; //記号を受け取ったらbtnから記号へ 32 document.getElementById("type").innerHTML = kigou; //記号が記録そのまま画面 33 } 34 document.getElementById("type").innerHTML = kigou; 35 Key = btn; //直前のキーは何か 36} 37function den_period() { 38 if (num.indexOf(".")<0) num +="."; //0より小さいときnumに.をプラスする。 39 document.getElementById("out").innerHTML = num; //outの内容書き換え 40} 41 42function den_clear() { 43 if(num == "c") { //現在の数字Cの場合 44 ans = 0; //計算中の数字消去 45 Key = ""; //1つ前の押されたキー削除 46} 47 num = "0"; //画面に何を表示 48 kigou = ""; //記号は何を表示 49 document.getElementById("out").innerHTML = num; 50 document.getElementById("type").innerHTML = kigou; 51} 52 53function den_equal() { 54 if(num == "=") { 55 ans = eval(ans + kigou + num); 56 Key = "="; 57 } 58 num = "0"; 59 kigou = Key; 60 document.getElementById("out").innerHTML = ans; 61 document.getElementById("type").innerHTML = ""; 62} 63</script> 64 65</body> 66</html>
参考と違う処理
javascript
1function den_clear() { 2 if(num == "c") { //現在の数字Cの場合 3 ans = 0; //計算中の数字消去 4 Key = ""; //1つ前の押されたキー削除 5} 6 num = "0"; //画面に何を表示 7 kigou = ""; //記号は何を表示 8 document.getElementById("out").innerHTML = num; 9 document.getElementById("type").innerHTML = kigou; 10} 11 12function den_equal() { 13 if(num == "=") { 14 ans = eval(ans + kigou + num); 15 Key = "="; 16 } 17 num = "0"; 18 kigou = Key; 19 document.getElementById("out").innerHTML = ans; 20 document.getElementById("type").innerHTML = ""; 21}
参考サイト
回答1件
あなたの回答
tips
プレビュー