js实现单个输入框内简单的加减乘除计算

这是一个简单的加减乘除计算,更多的是提供一个思路,没做很复杂的边界处理!!!

代码示例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<div>
			<input type="text" id="comp" onchange="compute()">
			<button onclick="clearInput()">清空</button>
		</div>
		<script>
			var inputEl = document.getElementById("comp")
			// 计算输入框失去焦点时 计算内容
			function compute() {
				var value = inputEl.value
				value = value.replace(/\s*/g, "");
				var reg1 = /^(0|([1-9]\d*))(\.\d+)?[\+\-\*\/](0|([1-9]\d*))(\.\d+)?$/ //不限制小数位数的表达式
				var reg2 = /^[+-]?(0|([1-9]\d*))(\.\d+)?$/ // 只有一个数字
				var result = ''
				if (reg1.test(value)) {
					let values = value.split(/[\+\-\*\/]/) // 根据运算符分割数字
					let num1 = parseFloat(values[0])
					let num2 = parseFloat(values[1])
					if (value.indexOf('+') !== -1) {
						result = formatValue(num1 + num2, 1)
					}
					if (value.indexOf('-') !== -1) {
						result = formatValue(num1 - num2, 1)
					}
					if (value.indexOf('*') !== -1) {
						result = formatValue(num1 * num2, 1)
					}
					if (value.indexOf('/') !== -1) {
						result = formatValue(num1 / num2, 1)
					}
				} else if (reg2.test(value)) {
					result = value
				} else {
					result = ''
				}
				inputEl.value = result;
			}
			// 处理小数精度问题
			function formatValue(value, digit) {
				var m = Math.pow(10, digit);
				return parseFloat(value * m, 10) / m; // parseFloat():第一个参数 - String ,第二个参数 - 进制数
			}
			// 清空输入框内容
			function clearInput() {
				inputEl.value = ''
			}
		</script>
	</body>
</html>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值