1. 程式人生 > >Html+javascript實現一個簡單的計算器,可繼續計算

Html+javascript實現一個簡單的計算器,可繼續計算

先展示出計算器的大致樣子

<body>
		<div id="main">
			<table frame="box" rules="all">
				<tr>
					<td colspan="5" ><input type="text" id="content" readonly="readonly"/></td>
				</tr>
				
				<tr>
					<td colspan="5"><button class="long" onclick="equal()">=</button></td>
				</tr>
				    
				<tr>
					<td><button onclick="onClick(this)">1</button></td>
					<td><button onclick="onClick(this)">2</button></td>
					<td><button onclick="onClick(this)">3</button></td>
					<td><button onclick="onClick(this)">4</button></td>
					<td><button onclick="onClick(this)">5</button></td>
				</tr>
				
				<tr>
					<td><button onclick="onClick(this)">6</button></td>
					<td><button onclick="onClick(this)">7</button></td>
					<td><button onclick="onClick(this)">8</button></td>
					<td><button onclick="onClick(this)">9</button></td>
					<td><button onclick="onClick(this)">0</button></td>
				</tr>
				
				<tr>
					<td><button onclick="onClick(this)">.</button></td>
					<td><button onclick="onClick(this)">+</button></td>
					<td><button onclick="onClick(this)">-</button></td>
					<td><button onclick="onClick(this)">*</button></td>
					<td><button onclick="onClick(this)">/</button></td>
				</tr>
				
				<tr>
					<td colspan="5"><button class="long" onclick="changNull()">MR</button></td>
				</tr>
			</table>
		</div>
	</body>

使用CSS修飾

<style type="text/css">
			#main{
				width: 521px;
				height: 622px;
				margin: auto;
			}
			.long{
				width: 517px;
				font-size: 50px;
			}
			#content{
				width: 513px;
				height: 100px;
				font-size: 30px;
			}
			button{
				width: 101px;
				height: 100px;
				font-size: 50px;
			}
		</style>

在這裡插入圖片描述
以下為script程式碼
首先看一下全域性變數

var data = [];            //存放點選的數字與運算子
		var str = "";             //將data陣列轉換為string,用於顯示
		var curIndex = 0;         //data[]當前的下標
		var isCal = 0;            //是否計算過,用於二次繼續計算

isCal用於記錄是否運算過,它幫助我們在結果後繼續進行運算,這裡設0為第一次計算
1為之前有過一次計算;

然後是點選數字和運算子,用this來獲得點選的button值

//點選數字或運算子
		function onClick(v){

	     if(isCal==0){            //判斷是否是第一次計算
		  inputCount(v);          
		 }
		  else{
		  	data.length=1;        //存入結果的長度
		  	curIndex = 1;         
		  	data[0] = document.getElementById("content").value;//在data[0]存入結果
		  	inputCount (v); 
		  }

	     }

在上面我們看到了 inputCount(v)這個函式

 //顯示點選的資料
		function inputCount (v) {
		  data[curIndex] = v.innerHTML;
		  str = data.join("");
		  curIndex++;
		  document.getElementById("content").value=str;
		}

運算結果,必備的,核心函式是eval();
要考慮除數是0時的結果;

//運算結果
		function equal(){
			var result = eval( document.getElementById("content").value);
			
			if(result.toString()=="Infinity"){          //不可將0作為除數
				alert("除數不可以為0,結果為Infinity");
				changNull();
			}
			else{
			document.getElementById("content").value=result.toString();
			isCal=1;
			}
		}

最後要有清空顯示欄
不僅要將顯示欄的value變為空,還需要將data[]的長度變為0,當前下標置0;

//清除
		function changNull(){
		   document.getElementById("content").value="";
		   curIndex = 0;
		   data.length=0;
		}

看看效果
在這裡插入圖片描述
繼續計算的功能不好展示,自己試試吧