(function () {
let screen = document.querySelector('.screen');
let buttons = document.querySelectorAll('.btn');
let clear = document.querySelector('.btn-clear');
let equal = document.querySelector('.btn-equal');
buttons.forEach(function (button) {
button.addEventListener('click', function (e) {
let value = e.target.dataset.num;
screen.value += value;
});
});
equal.addEventListener('click', function () {
if (screen.value == '') {
screen.value = "Please Enter Value";
} else {
let answer = eval(screen.value)
screen.value = answer;
}
});
})();
当我计算时
num1 + num 2
答案就会出现在屏幕上num1+num2undefind
但答案应该是 num1 + num 2
= 答案
您的问题似乎与如何将值连接为字符串有关,而不是与数字计算有关。在 JavaScript 中,当您对字符串使用 + 运算符时,它会连接它们而不是数字相加。
从您的描述来看,听起来 num1、num2 和 undefined 被连接为字符串。未定义可能来自于代码的某些部分试图访问不存在或未正确设置的属性或值。
以下是排除故障并可能解决问题的方法:
确保数值: 确保您尝试添加的值实际上是数字。您可以使用 Number() 函数将数字的字符串表示形式转换为实际数值。
检查未定义的值: 结果中的未定义表明您在计算中的某个位置引用了尚未定义的变量或属性。检查您的代码以确保所有变量都已正确初始化,并且您没有尝试访问 null 或未定义的属性。
这是 equal.addEventListener 函数的修订版本,其中包含以下注意事项:
equal.addEventListener('click', function () {
if (screen.value == '') {
screen.value = "Please Enter Value";
} else {
try {
// Ensure the expression is safely evaluated
let answer = eval(screen.value)
screen.value = answer;
} catch (error) {
// If there's an error in the eval (like invalid input), catch it and display a message
screen.value = "Invalid Input";
console.error(error); // Log the error to the console for debugging
}
}
});
调试提示:如果您仍然遇到问题,请添加 console.log 语句来记录 num1、num2 以及计算中涉及的任何其他变量的值,以确保它们符合您在代码的每个阶段所期望的结果.