批改状态:未批改
老师批语:
编程: 使用js完成一个功能相对完整的计算器案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>简单四则运算器</title>
</head>
<body>
<div>
<form action="">
<table>
<caption>计算器</caption>
<tr>
<td><input type="text" name="no1" placeholder="运算数1"></td>
<td><select name="option" id="">
<option value="null">请选择运算符</option>
<option value="sum">+</option>
<option value="sub">-</option>
<option value="mul">*</option>
<option value="div">/</option>
</select>
</td>
<td><input type="text" name="no2" placeholder="运算数2"></td>
<td><button type="button">计算</button></td>
</tr>
<tr>
<td>结果:</td>
<td id="result"></td>
</tr>
</table>
</form>
</div>
<!--用js操作HTML的思路:1.通过 name属性、id、tag等得到相应的对象2.通过函数等对对象的属性添加行为-->
<script>
//1. 通过DOM的方法获得HTML对象
let no1 = document.getElementsByName('no1')[0];//通过ByName获得是对象数组,在这里得到是以no1为name的input的数组对象 ,这里数组仅一个数据
let no2 = document.getElementsByName('no2')[0];
let option = document.getElementsByName('option')[0];
let btn = document.getElementsByTagName('button')[0]; //elements 都是复数,还是数组
let result = document.getElementById('result'); //id 唯一性,这个仅一个对象
// 2. 添加事件
btn.onclick = function (){
//初始化运算数
let data1 = 0;
let data2 = 0;
// 对运算数进行非空及非数字类型判断
if (no1.value.length === 0){
alert ('第一个运算数不能为空!')
no1.focus();
// return false; // 用来阻止浏览器的默认行为,但是这里,搞不懂,这是个判断语句,不符合要求自然不会执行啊
} else if (isNaN(no1.value)) {
alert ('请输入数字!');
} else if (no2.value.length === 0){
alert ('请输入第二个运算数!');
no2.focus();
} else if (isNaN(no2.value)){
alert('第二个运算数必须是数字')
no2.focus();
} else {
data1 = parseFloat(no1.value);
data2 = parseFloat(no2.value);
}
// 判断运算符
let options = option.value; //获取运算符
let temp = 0 ;//设置一个临时变量,存储运算结果
let flag = ''; //设置一个标识符
switch (options) {
case 'null':
alert('请选择适当运算符');
option.focus();
break;
case 'sum':
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('运算数2,除数不能为零,你不知道吗??')
no2.focus();
no2.value = ''; //获取聚焦,并清空
return false;
} else {
temp = data1 / data2;
temp = Math.round(temp *100) /100 ;//Math.round(No)是把一个数舍入最接近的数字,先乘以100在除以100是为了取2位小数
}
break;
}
result.innerHTML = temp;
}
</script>
</body>
</html>点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号