我需要做一个计算器使用JavaScript,超文本标记语言和CSS。在我开始编写compute (=
)按钮之前,一切都很好。
这是我的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';
}
如果有人知道如何解决问题,如果你能回复,我将不胜感激。
发布于 2018-06-17 01:55:26
你应该很幸运,因为你犯了一个错误,把变量放在引号里。这就是为什么除了文字字符串=ans
之外,你没有得到其他值(也许,我们不知道,因为你没有发布给出更好答案所需的所有代码)。
回到为什么你是幸运的。
永远不要使用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>
发布于 2018-06-17 01:56:46
不确定ans是局部变量还是全局变量,但如果它的意图是局部变量,那么您应该将其设置为:
var ans = Math.floor(eval(+input_var.value));
另外,因为您将元素的值设置为'=' + 'ans'
,所以实际上将其设置为实际的字符串'ans‘。如果你想引用什么是ans
,你应该这样写:
document.getElementById('answer').value = '=' + ans;
https://stackoverflow.com/questions/50890250
复制相似问题