我需要用JavaScript,HTML和CSS做一个计算器。一切都很好,直到我开始编码计算(=
(按钮。
这是我的 HTML:
<input type="button" value=" = " onclick="compute()">
这是我的JS:
function compute() {
var input_var = document.getElementById('input');
ans = Math.floor(+eval(input_var.value));
document.getElementById('answer').value = '=' + 'ans';
}
如果有人知道如何解决问题所在,如果您能回复,我将不胜感激。
首先,您应该发布整个代码以获得准确的解决方案!
可能这些可能是一些错误:
- 使用值"input">设置=按钮的id属性
- 第三行应为:
ans = Math.floor(eval(+input_var.value));
- 第 4 行应该是:
document.getElementById('answer').value = '=' + ans;
正如 StaticBeagle 也提到的那样。
你应该很幸运,你犯了错误,把变量放在引号里。这就是为什么除了文字字符串=ans
之外,您不会获得其他值的原因(也许,我们不知道,因为您没有发布给出更好答案所需的所有代码(。
回到你为什么幸运。
永远不要使用eval
!eval 是邪恶的。(除非你知道你在做什么,但你不知道未来几年(。要解析数字,请使用Number(input_var.value)
.
下一个错误是通过省略ans
声明的var, let, const
之一来创建全局变量。
接下来你不应该做的是使用内联JavaScript。我们改用eventListener
。如前所述,由于您的问题缺少太多细节,因此无法回答更具体的问题 - 但是我将向您展示如何通过按下控制台中的按钮来获取值。
document.getElementById('foo').addEventListener('submit', e => {
// prevent submitting the form (I guess another error in your code)
e.preventDefault();
const value = Number(document.getElementById('input').value);
console.log('The value is: ' + value);
}, false);
<form id="foo">
<input type="number" id="input">
<input type="submit" value=" = ">
</form>
不确定 ans 是局部变量还是全局变量,但如果它的意图是局部变量,那么你应该这样:
var ans = Math.floor(eval(+input_var.value));
此外,因为您将元素的值设置为'=' + 'ans'
所以您实际上将其设置为实际的字符串"one_answers"。如果你想参考是什么ans
,你应该这样写:
document.getElementById('answer').value = '=' + ans;