用html实现公式计算,用js中的eval()函数实现一个简单的计算器

虽然经常会听到一些不推荐使用eval()的声音, 但不得不承认eval()的功能十分强大,下面介绍一个我最近用eval()函数实现一个简单计算器的例子。

0.样式预览

640f499a76fe

html+css部分

1.思路介绍

先在html中结合css样式画出一个计算器,然后给每个按钮添加onclick事件,计算由eval()实现。

代码如下:

①HTML部分

②CSS部分

#calcFrame{

position: relative;

padding: 0;

margin: 10px auto;

width: 400px;

height: 300px;

overflow: hidden;

}

#display{

position: absolute;

margin: 0;

padding: 0;

left: 5px;

right: 5px;

top: 5px;

height: 100px;

overflow: hidden;

border: 2px solid black;

}

#message{

width: 400px;

height: 100px;

font-size: 35px;

border: 0;

}

#buttons{

position: absolute;

left: 5px;

right: 5px;

top: 110px;

border: 1px solid #315484;

}

ul{

margin: 0;

padding: 0;

list-style: none;

}

li{

margin: 0;

padding: 0;

float: left;

}

input{

margin-left: 1.5px;

margin-top: 1.5px;

margin-bottom: 1.5px;

width: 95px;

font-family: SimHei;

font-size: 25px;

}

#add, #minus, #multiply, #divide, #equal{

color: white;

background-color: #6681ac;

}

#point, #b0, #b1, #b2, #b3, #b4, #b5, #b6, #b7, #b8, #b9{

background-color: #afafaf;

}

#tg, #qc{

color: white;

width: 191.5px;

background-color: #a4472d;

}

③JS部分

function clickButton(val){//点击数字,小数点,除等号外的运算符时...

messageBox = document.getElementById('message');

messageBox.value = messageBox.value + val;

}

function clickBack(){//点击退格时...

messageBox = document.getElementById('message');

messageBox.value = messageBox.value.slice(0, -1);

}

function clickClear(){//点击清除时...

messageBox = document.getElementById('message');

messageBox.value = '';

}

function clickEqual(){//点击等号时...

try{

messageBox = document.getElementById('message');

messageBox.value = eval(messageBox.value);

if(messageBox.value == "undefined"){

alert("输入不能为空!")

clickClear();

}

}

catch(error){

alert("请注意输入格式!");

clickClear();

}

}

真正计算的部分只有eval()所在行,这里处理了两个小bug,实际上还有很多bug...

之后会尝试使用不采用eval()的方法重新实现计算部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值