代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
li {
list-style: none;
}
.calculator {
width: 700px;
height: 700px;
margin: 30px auto;
border: 1px solid grey;
}
.screen {
width: 100%;
height: 200px;
}
.keyboard {
width: 100%;
height: 500px;
}
.keyboard ul {
width: 100%;
height: 100%;
display: flex;
flex-wrap: wrap;
}
.keyboard ul li{
text-align: center;
line-height: 90px;
font-size: 25px;
box-sizing: border-box;
flex: 0 1 auto;
width: 25%;
height: 20%;
border-right: 1px solid grey;
border-bottom:1px solid grey;
}
.keyboard ul li:hover{
background: #ddd;
}
.keyboard ul li.topBor {
border-top: 1px solid grey;
}
.keyboard ul li.rightBor {
border-right: 0;
}
.keyboard ul li.rightBor:hover {
background: skyblue;
}
.keyboard li.noNum {
background: rgb(240, 238, 238);
}
.calculator .screen-calc {
width: 100%;
height: 100px;
color: rgb(31, 29, 29);
}
.calculator .screen-input {
width: 100%;
height: 100px;
font-size: 20px;
}
</style>
</head>
<body>
<div class="calculator">
<div class="screen">
<div class="screen-calc"></div>
<div class="screen-input"></div>
</div>
<div class="keyboard">
<ul>
<li class="topBor noNum">CE</li>
<li class="topBor noNum">C</li>
<li class="topBor noNum"><-</li>
<li class="topBor rightBor noNum">÷</li>
<li>7</li>
<li>8</li>
<li>9</li>
<li class="rightBor noNum">*</li>
<li>4</li>
<li>5</li>
<li>6</li>
<li class="rightBor noNum">-</li>
<li>1</li>
<li>2</li>
<li>3</li>
<li class="rightBor noNum">+</li>
<li class="noNum">±</li>
<li>0</li>
<li class="noNum">.</li>
<li class="rightBor noNum">=</li>
</ul>
</div>
</div>
<script>
(function(){
function KeyBoard(list,screenInput,screenCalc){
this.list = list;
this.screenInput = screenInput;
this.value = 0;
this.screenCalc = screenCalc;
}
KeyBoard.prototype.init = function(){
this.bindEvent();
}
KeyBoard.prototype.bindEvent = function(){
this.list[4].onclick = function(){
if(this.screenInput.innerHTML == '0'){
this.screenInput.innerHTML = '';
}
console.log(this.screenCalc.innerHTML[this.screenCalc.innerHTML.length-1]);
if((this.screenCalc.innerHTML[this.screenCalc.innerHTML.length-1] == '+'||'-'||'*'||'÷' )&&this.screenInput.innerHTML == ''){
this.screenInput.innerHTML = '7';
}else{
this.screenInput.innerHTML = this.screenInput.innerHTML + '7';
this.value = parseFloat(this.screenInput.innerHTML);
console.log(this.value)
}
}.bind(this);
this.list[5].onclick = function(){
if(this.screenInput.innerHTML == '0'){
this.screenInput.innerHTML = '';
}
if((this.screenCalc.innerHTML[this.screenCalc.innerHTML.length-1] == '+'||'-'||'*'||'÷')&&this.screenInput.innerHTML == ''){
this.screenInput.innerHTML = '8';
}else{
this.screenInput.innerHTML = this.screenInput.innerHTML + '8';
this.value = parseFloat(this.screenInput.innerHTML);
}
}.bind(this);
this.list[6].onclick = function(){
if(this.screenInput.innerHTML == '0'){
this.screenInput.innerHTML = '';
}
if((this.screenCalc.innerHTML[this.screenCalc.innerHTML.length-1] == '+'||'-'||'*'||'÷')&&this.screenInput.innerHTML == ''){
this.screenInput.innerHTML = '9';
}else{
this.screenInput.innerHTML = this.screenInput.innerHTML + '9';
this.value = parseFloat(this.screenInput.innerHTML);
}
}.bind(this);
this.list[8].onclick = function(){
if(this.screenInput.innerHTML == '0'){
this.screenInput.innerHTML = '';
}
if((this.screenCalc.innerHTML[this.screenCalc.innerHTML.length-1] == '+'||'-'||'*'||'÷')&&this.screenInput.innerHTML == ''){
this.screenInput.innerHTML = '4';
}else{
this.screenInput.innerHTML = this.screenInput.innerHTML + '4';
this.value = parseFloat(this.screenInput.innerHTML);
}
}.bind(this);
this.list[9].onclick = function(){
if(this.screenInput.innerHTML == '0'){
this.screenInput.innerHTML = '';
}
if((this.screenCalc.innerHTML[this.screenCalc.innerHTML.length-1] == '+'||'-'||'*'||'÷')&&this.screenInput.innerHTML == ''){
this.screenInput.innerHTML = '5';
}else{
this.screenInput.innerHTML = this.screenInput.innerHTML + '5';
this.value = parseFloat(this.screenInput.innerHTML);
}
}.bind(this);
this.list[10].onclick = function(){
if(this.screenInput.innerHTML == '0'){
this.screenInput.innerHTML = '';
}
if((this.screenCalc.innerHTML[this.screenCalc.innerHTML.length-1] == '+'||'-'||'*'||'÷')&&this.screenInput.innerHTML == ''){
this.screenInput.innerHTML = '6';
}else{
this.screenInput.innerHTML = this.screenInput.innerHTML + '6';
this.value = parseFloat(this.screenInput.innerHTML);
}
}.bind(this);
this.list[12].onclick = function(){
if(this.screenInput.innerHTML == '0'){
this.screenInput.innerHTML = '';
}
if((this.screenCalc.innerHTML[this.screenCalc.innerHTML.length-1] == '+'||'-'||'*'||'÷')&&this.screenInput.innerHTML == ''){
this.screenInput.innerHTML = '1';
}else{
this.screenInput.innerHTML = this.screenInput.innerHTML + '1';
this.value = parseFloat(this.screenInput.innerHTML);
}
}.bind(this);
this.list[13].onclick = function(){
if(this.screenInput.innerHTML == '0'){
this.screenInput.innerHTML = '';
}
if((this.screenCalc.innerHTML[this.screenCalc.innerHTML.length-1] == '+'||'-'||'*'||'÷')&&this.screenInput.innerHTML == ''){
this.screenInput.innerHTML = '2';
}else{
this.screenInput.innerHTML = this.screenInput.innerHTML + '2';
this.value = parseFloat(this.screenInput.innerHTML);
}
}.bind(this);
this.list[14].onclick = function(){
if(this.screenInput.innerHTML == '0'){
this.screenInput.innerHTML = '';
}
if((this.screenCalc.innerHTML[this.screenCalc.innerHTML.length-1] == '+'||'-'||'*'||'÷')&&this.screenInput.innerHTML == ''){
this.screenInput.innerHTML = '3';
}else{
this.screenInput.innerHTML = this.screenInput.innerHTML + '3';
this.value = parseFloat(this.screenInput.innerHTML);
}
}.bind(this);
this.list[17].onclick = function(){
if((this.screenCalc.innerHTML[this.screenCalc.innerHTML.length-1] == '+'||'-'||'*'||'÷')&&this.screenInput.innerHTML == ''){
this.screenInput.innerHTML = '0';
}else{
this.screenInput.innerHTML = this.screenInput.innerHTML + '0';
this.value = parseFloat(this.screenInput.innerHTML);
}
}.bind(this);
this.list[18].onclick = function(){
console.log(this.screenInput.innerHTML.match(/\./g));
if(this.screenInput.innerHTML.match(/\./g) !== null){
return;
}
if((this.screenCalc.innerHTML == '' && this.screenInput.innerHTML == '') || ((this.screenCalc.innerHTML[this.screenCalc.innerHTML.length-1] == '+'||'-'||'*'||'÷')&&this.screenCalc.innerHTML != ''&&this.screenInput.innerHTML=='')){
this.screenInput.innerHTML = '0' + '.';
}else{
this.screenInput.innerHTML = this.screenInput.innerHTML + '.';
}
}.bind(this);
this.list[3].onclick = function(){
if((this.screenCalc.innerHTML[this.screenCalc.innerHTML.length-1] == '+'||'-'||'*'||'÷')&&this.screenCalc.innerHTML!=''&&this.screenInput.innerHTML==''){
this.screenCalc.innerHTML = this.screenCalc.innerHTML.slice(0,this.screenCalc.innerHTML.length-1) + '÷';
return;
}
if(this.screenCalc.innerHTML == '' && this.screenInput.innerHTML == ''){
this.screenCalc.innerHTML='0÷';
return;
}
if(this.screenCalc.innerHTML == ''){
this.screenCalc.innerHTML = this.screenInput.innerHTML + '÷';
this.screenInput.innerHTML = '';
}
else{
this.screenCalc.innerHTML=this.screenCalc.innerHTML+ this.screenInput.innerHTML + '÷';
this.screenInput.innerHTML = '';
}
}.bind(this);
this.list[7].onclick = function(){
if((this.screenCalc.innerHTML[this.screenCalc.innerHTML.length-1] == '+'||'-'||'*'||'÷')&&this.screenCalc.innerHTML!=''&&this.screenInput.innerHTML==''){
this.screenCalc.innerHTML = this.screenCalc.innerHTML.slice(0,this.screenCalc.innerHTML.length-1) + '*';
return;
}
if(this.screenCalc.innerHTML == '' && this.screenInput.innerHTML == ''){
this.screenCalc.innerHTML='0*';
return;
}
if(this.screenCalc.innerHTML == ''){
this.screenCalc.innerHTML = this.screenInput.innerHTML + '*';
this.screenInput.innerHTML = '';
}
else{
this.screenCalc.innerHTML=this.screenCalc.innerHTML+ this.screenInput.innerHTML + '*';
this.screenInput.innerHTML = '';
}
}.bind(this);
this.list[11].onclick = function(){
if((this.screenCalc.innerHTML[this.screenCalc.innerHTML.length-1] == '+'||'-'||'*'||'÷')&&this.screenCalc.innerHTML!=''&&this.screenInput.innerHTML==''){
this.screenCalc.innerHTML = this.screenCalc.innerHTML.slice(0,this.screenCalc.innerHTML.length-1) + '-';
return;
}
if(this.screenCalc.innerHTML == '' && this.screenInput.innerHTML == ''){
this.screenCalc.innerHTML='0-';
return;
}
if(this.screenCalc.innerHTML == ''){
this.screenCalc.innerHTML = this.screenInput.innerHTML + '-';
this.screenInput.innerHTML = '';
}
else{
this.screenCalc.innerHTML=this.screenCalc.innerHTML+ this.screenInput.innerHTML + '-';
this.screenInput.innerHTML = '';
}
}.bind(this);
this.list[15].onclick = function(){
if((this.screenCalc.innerHTML[this.screenCalc.innerHTML.length-1] == '+'||'-'||'*'||'÷')&&this.screenCalc.innerHTML != ''&&this.screenInput.innerHTML==''){
this.screenCalc.innerHTML = this.screenCalc.innerHTML.slice(0,this.screenCalc.innerHTML.length-1) + '+';
return;
}
if(this.screenCalc.innerHTML == '' && this.screenInput.innerHTML == ''){
this.screenCalc.innerHTML='0+';
return;
}
if(this.screenCalc.innerHTML == ''){
this.screenCalc.innerHTML = this.screenInput.innerHTML + '+';
this.screenInput.innerHTML = '';
}
else{
this.screenCalc.innerHTML=this.screenCalc.innerHTML+ this.screenInput.innerHTML + '+';
this.screenInput.innerHTML = '';
}
}.bind(this);
this.list[19].onclick = function(){
this.screenCalc.innerHTML=this.screenCalc.innerHTML+ this.screenInput.innerHTML;
this.screenInput.innerHTML = eval((this.screenCalc.innerHTML.replace('÷','/')).replace(/--/g,'+'));
this.screenCalc.innerHTML = '';
}.bind(this);
this.list[1].onclick = function(){
this.screenInput.innerHTML = '';
this.screenCalc.innerHTML = '';
}.bind(this);
this.list[0].onclick = function(){
this.screenInput.innerHTML = '';
}.bind(this);
this.list[2].onclick = function(){
this.screenInput.innerHTML = this.screenInput.innerHTML.slice(0,this.screenInput.innerHTML.length-1);
}.bind(this);
this.list[16].onclick = function(){
if(this.screenInput.innerHTML != ''){
this.screenInput.innerHTML = '-' + this.screenInput.innerHTML;
}
}.bind(this);
}
window.KeyBoard = KeyBoard;
})();
var key = new KeyBoard(document.getElementsByTagName('li'),document.getElementsByClassName('screen-input')[0],
document.getElementsByClassName('screen-calc')[0]);
key.init();
(function(){
})();
</script>
</body>
</html>
演示