当我计算 num1 + num 2 时,屏幕上会出现 num1+num2undefind

问题描述 投票:0回答:1
(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 html undefined
1个回答
0
投票

您的问题似乎与如何将值连接为字符串有关,而不是与数字计算有关。在 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 以及计算中涉及的任何其他变量的值,以确保它们符合您在代码的每个阶段所期望的结果.

© www.soinside.com 2019 - 2024. All rights reserved.