在写一个小 demo 的时候,无意中发现定义变量的时候直接写入 value,会导致获取不到数据,或者获取的不是我们想要的内容,在 js 中运算不能随便把 value 属性定义成变量
先看一段代码
<input type="text"" id="a">
<span>*</span>
<input type="text" id="b">
<input type="button" value="=" onclick="beto()">
<input type="text" id="sub" disabled>
<script>
function beto() {
var a = document.getElementById('a').value
var b = document.getElementById('b').value
var sub = document.getElementById('sub').value
sub = a + b
}
</script>
就这么一看,逻辑貌似没有问题,获取 a 和 b 的 value,乘法运算,然后输出 sub
但是放在浏览器运行的时候,发现完全没有反应
为什么呢?
(假装思考五分钟…)
因为 sub.value 不能直接定义在变量中
// 先定义 id 为 sub 的 input 框
var sub = document.getElementById('sub')
// 然后在运算的时候在直接使用 sub.value
sub.value = a * b
顺手放一个写 demo 时候用的简易计算器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>简易计算器</title>
</head>
<body>
<input type="text"" id="a">
<select id="c">
<option value="+">+</option>
<option value="-">-</option>
<option value="*">*</option>
<option value="/">/</option>
</select>
<input type="text" id="b">
<input type="button" value="=" onclick="beto()">
<input type="text" id="sub" disabled>
<script>
function beto() {
var a = document.getElementById('a').value
var b = document.getElementById('b').value
var c = document.getElementById('c').value
var sub = document.getElementById('sub')
switch(c) {
case "+":
sub.value = parseInt(a) + parseInt(b);
break;
case "-":
sub.value = parseInt(a) - parseInt(b);
break;
case "*":
sub.value = parseInt(a) * parseInt(b);
break;
case "/":
sub.value = parseInt(a) / parseInt(b);
break;
}
}
</script>
</body>
</html>