Blogger Information
Blog 45
fans 0
comment 1
visits 33107
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
小型计算器示例
源逸
Original
673 people have browsed it

1.获取页面输入控件的值,按钮和结果占位符

2.给按钮添加单击事件,提交后就开始执行计算

3.初始化数据后,判断输入内容是否为空,否则开始判断是否为空或是否为数字,该条件判断是’或‘,只要有一个满足就执行代码块

4.判断当前选择的操作符,把结果相加后,符合条件就执行相应的代码块,最后把结果渲染到页面

计算器.png

实例

<!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>小型计算器(示例重点使用到onclick事件与switch流程控制语句)2019.05.10</title>
	<style type="text/css">
		.box {
			width: 500px;
			height: 200px;
			background-color: #efefef;
			border: 1px solid lightgray;
			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;
			/*background-color: cyan;*/
		}

		button {
			width: 100%;
			height: 100%;
			border: none;
			background-color: skyblue;
			color: white;
		}
		button:hover {
			cursor: pointer;
			background-color: coral;
			width: 105%;
			height: 105%;
		}

	</style>
</head>
<body>
<div class="box">
		<h2>计算器</h2>
		<form>
			<table>
				<tr>
					<td><input type="text" name="opt1" placeholder="操作数1" autofocus></td>
					<td>
						<select name="option">
							<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">计算</button></td>
				</tr>
				<tr>
					<td colspan="2" align="right"><h3>结果:</h3></td>
					<td colspan="2" align="left"><h3 id="result"></h3></td>
				</tr>
			</table>
		</form>
	</div>

<script>
	//1.获取基本元素
	var opt1 = document.getElementsByName('opt1')[0];
	var opt2 = document.getElementsByName('opt2')[0];
	var opt = document.getElementsByName('option')[0];

	var but = document.getElementsByTagName('button')[0];
	var result = document.getElementById('result');

	//2.给按钮添加单击事件,计算就执行单击事件运算
	but.onclick = function(){
		//初始化数据
		var data1 = 0;
		var 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;

		}else if(isNaN(opt2.value)){
			alert('第二个操作必须为数字');
			opt2.focus();
			return false;

		}else{
			data1 = parseFloat(opt1.value);
			data2 = parseFloat(opt2.value);
		}


		var option = opt.value;
		var temp = 0;
		var 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('除数不能为0,请重新输入');
					opt2.focus();
					return false;
				}else{
					temp = data1 / data2;
					//保留两位小数
					temp = Math.round(temp * 100) / 100;
				}
				break;
		}

		var str = '<span style="color:coral">';
		str += data1 + ' ' + flag + data2 + ' = ' + temp;
		str += '</span>';
		result.innerHTML = str;
	};
</script>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例


Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post