在写一个小 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>