实例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>计算器</title> <style> .box { width: 500px; height: 300px; background-color: #efefef; border: 1px solid lightgrey; text-align: center; margin: 20px auto; color: #636363; border-radius: 15px; box-shadow: 2px 2px 2px #999; } table { margin: auto; /*border: 1px solid red;*/ } td { width: 100px; height: 30px; padding: 5px 10px; } input, select { width: 100%; height: 100%; border: none; text-align: left; padding-left: 15px; } button { width: 100%; height: 100%; border: none; background-color: skyblue; color: white; } button:hover { cursor: pointer; background-color: coral; width: 110%; height: 110%; } </style> </head> <body> <div class="box"> <h2>计算器</h2> <form> <table> <tr> <td><input type="text" name="opt1" placeholder="操作数1"></td> <td> <select name="option" id=""> <option value="null">请选择操作</option> <option value="add">+</option> <option value="sub">-</option> <option value="mul">*</option> <option value="div">/</option> </select> </td> <td><input type="text" name="opt2" placeholder="操作数2"></td> <td><button type="button"name="button" >计算</button></td> </tr> <tr> <td align="right" colspan="1"><h3>结果:</h3></td> <td align="left" colspan="3"><h3 id="result"></h3></td> </tr> </table> </form> </div> <script> //1. 获取操作数,按钮,结果占位符 //getElementsByName() 方法可返回带有指定名称的对象的集合,document.getElementsByName(name),name必须,元素的名称 name="opt1/2"。 let opt1 = document.getElementsByName('opt1')[0]; let opt2 = document.getElementsByName('opt2')[0]; let opt = document.getElementsByName('option')[0]; let btn = document.getElementsByTagName('button')[0]; //getElementById() 方法可返回对拥有指定 ID 的第一个对象的引用 let result = document.getElementById('result'); //2. 给按钮添加事件,进行计算,onclick 属性由元素上的鼠标点击触发 btn.onclick = function () { //操作数初始化 let data1 = 0; let data2 = 0; if (opt1.value.length === 0) { alert('第一个操作数不能为空'); opt1.focus(); return false; } else if (isNaN(opt1.value)) { alert('第一个操作数必须为数字'); opt1.focus(); return false; } else if (opt2.value.length === 0) { alert('第二个操作数不能为空'); opt2.focus(); return false; //isNaN() 函数用于检查其参数是否是非数字值,isNaN(value),value,要检测的值。 } else if (isNaN(opt2.value)) { alert('第二个操作数必须为数字'); opt2.focus(); return false; } else { //parseFloat() 函数可解析一个字符串,并返回一个浮点数,parseFloat(string),string需要被解析的字符串 data1 = parseFloat(opt1.value); data2 = parseFloat(opt2.value); } //对操作符进行处理 let option = opt.value; // 拿到了用户选择的操作 let temp = 0; let flag = ''; switch (option) { case 'null': alert('请选择操作类型'); opt.focus(); return false; case 'add': flag = '+'; temp = data1 + data2; break; case 'sub': flag = '-'; temp = data1 - data2; break; case 'mul': flag = '*'; temp = data1 * data2; break; case 'div': flag = '/'; //进行除数不能为零的判断和处理 if (data2 === 0) { alert('除数不能为零'); opt2.focus(); opt2.value = ''; return false; } else { temp = data1 / data2; // 四舍五入,仅保留二位小数 // Math 对象用于执行数学任务,round(x)对象方法,把数四舍五入为最接近的整数。 //因为四舍五入仅仅保留两位数,先乘以100,是为了保留住后面的小数,四舍五入完,肯定要在扣除 temp = Math.round(temp * 100) / 100; } break; } let str = '<span style="color:coral">'; str += data1 + ' ' +flag + ' ' + data2 + ' = ' +temp; str += '</span>'; //innerHTML 属性设置或返回表格行的开始和结束标签之间的 HTML,取得表格行的 innerHTML result.innerHTML = str; } </script> </body> </html>
运行实例 »
点击 "运行实例" 按钮查看在线实例
总结:对于js的完成一个计算器操作,对于HTML的form表单,table,还有css 样式等不多说,下面说一下js的计算器设计流程 :
1.获取操作数,按钮,结果占位符,就是先占着个固定位置,往里面填数据/内容
需要了解一下Document 对象它可以对html 页面中的所有元素进行访问,当然也可以访问对象方法
getElementById() 返回对拥有指定 id 的第一个对象的引用。
getElementsByName() 返回带有指定名称的对象集合。
getElementsByTagName() 返回带有指定标签名的对象集合。
2. 给按钮button添加事件,进行计算,onclick 属性由元素上的鼠标点击触发
isNaN() 函数用于检查其参数是否是非数字值,isNaN(value),value,要检测的值
parseFloat() 函数可解析一个字符串,并返回一个浮点数,parseFloat(string),string需要被解析的字符串
3.对操作符进行处理就是option里面的数据(加减乘除那些,重点是除法的处理上)
四舍五入,仅保留二位小数
temp = Math.round(temp * 100) / 100
Math 对象用于执行数学任务,round(x)对象方法,把数四舍五入为最接近的整数。
因为四舍五入仅仅保留两位数,先乘以100,是为了保留住后面的小数,四舍五入完,肯定要在扣除
4.设置或返回表格行的开始和结束标签之间的 html
result.innerHTML = str
innerHTML 属性设置或返回表格行的开始和结束标签之间的 HTML,取得表格行的 innerHTML