JavaScript 计算错误(计算器)



我需要用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';
}

如果有人知道如何解决问题所在,如果您能回复,我将不胜感激。

首先,您应该发布整个代码以获得准确的解决方案!

可能这些可能是一些错误:

  1. 使用值"input">设置=按钮的id属性
  2. 第三行应为:ans = Math.floor(eval(+input_var.value));
  3. 第 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;

最新更新