首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >javascript计算错误(计算器)

javascript计算错误(计算器)
EN

Stack Overflow用户
提问于 2018-06-17 01:43:50
回答 2查看 113关注 0票数 1

我需要做一个计算器使用JavaScript,超文本标记语言和CSS。在我开始编写compute (=)按钮之前,一切都很好。

这是我的HTML:

代码语言:javascript
复制
<input type="button" value=" = " onclick="compute()">

这是我的JS:

代码语言:javascript
复制
function compute() {
    var input_var = document.getElementById('input');
    ans = Math.floor(+eval(input_var.value));
    document.getElementById('answer').value = '=' + 'ans';
}

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

EN

回答 2

Stack Overflow用户

发布于 2018-06-17 01:55:26

你应该很幸运,因为你犯了一个错误,把变量放在引号里。这就是为什么除了文字字符串=ans之外,你没有得到其他值(也许,我们不知道,因为你没有发布给出更好答案所需的所有代码)。

回到为什么你是幸运的。

永远不要使用eval!伊瓦尔是邪恶的。(除非你知道你在做什么,但在接下来的几年里你不知道)。要解析一个数字,可以使用Number(input_var.value)

下一个错误是您通过省略ans声明中的一个var, let, const来创建全局变量。

下一件你不应该做的事情是使用内联javascript。我们改用eventListener。如前所述,由于您的问题缺少太多细节,因此无法回答更具体的问题--不过,我将向您展示如何通过按下控制台中的按钮来获得值。

代码语言:javascript
复制
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);
代码语言:javascript
复制
<form id="foo">
  <input type="number" id="input">
  <input type="submit" value=" = ">
</form>

票数 0
EN

Stack Overflow用户

发布于 2018-06-17 01:56:46

不确定ans是局部变量还是全局变量,但如果它的意图是局部变量,那么您应该将其设置为:

var ans = Math.floor(eval(+input_var.value));

另外,因为您将元素的值设置为'=' + 'ans',所以实际上将其设置为实际的字符串'ans‘。如果你想引用什么是ans,你应该这样写:

代码语言:javascript
复制
document.getElementById('answer').value = '=' + ans;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50890250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档