JavaScript在页面上给出NaN错误,但变量实际上是一个数字

JavaScript在页面上给出NaN错误,但变量实际上是一个数字,javascript,calculator,nan,Javascript,Calculator,Nan,我正在尝试用JS做一个基本的计算器。这是第一步。我的意思是,它计算1+3=4,但它不能计算4+2。实际上它是在控制台上计算的,但我不能在网页上显示,所以DOM。你知道为什么会这样吗 const operations = { '+': (a, b) => a + b, '-': (a, b) => a - b, '*': (a, b) => a * b, '/': (a, b) => a / b } const doOpr = functi

我正在尝试用JS做一个基本的计算器。这是第一步。我的意思是,它计算1+3=4,但它不能计算4+2。实际上它是在控制台上计算的,但我不能在网页上显示,所以DOM。你知道为什么会这样吗

const operations = {
    '+': (a, b) => a + b,
    '-': (a, b) => a - b,
    '*': (a, b) => a * b,
    '/': (a, b) => a / b
}

const doOpr = function (sign) {
    labelUser.value += `${sign}`

    // const deleteFn = function () {
    //     labelUser.value = labelUser.value.slice(0, labelUser.value.length - 1)
    // }
    // btnDelete.addEventListener('click', deleteFn)

    const equalFn = function (sign) {
        let numbers = labelUser.value.split(`${sign}`)
        //console.log(numbers)
        const operation = operations[`${sign}`]
        let result = operation(+numbers[0], +numbers[1])
        labelUser.value = result

        //console.log(typeof result, numbers) //This line proves that result is a number. Not a NaN. 
        //Also it proves numbers array contains only two elements.

        return
    }
    btnEqual.addEventListener('click', equalFn.bind(null, sign))
}

btnPlus.addEventListener('click', doOpr.bind(null, '+'))

btnExtr.addEventListener('click', doOpr.bind(null, '-'))
const btnPlus=document.querySelector('.btn plus'))
const btnExtr=document.querySelector('.btn extr')
const btnEqual=document.querySelector(“.btn equal”)
const btnDelete=document.querySelector('.btn delete')
const labelUser=document.querySelector('.user\u input')
const form=document.querySelector(“.user\u form”)
表单.重置()
常量运算={
“+”:(a,b)=>a+b,
“-”:(a,b)=>a-b,
“*”:(a,b)=>a*b,
“/”:(a,b)=>a/b
}
const doOpr=函数(符号){
labelUser.value+=`${sign}`
//常量deleteFn=函数(){
//labelUser.value=labelUser.value.slice(0,labelUser.value.length-1)
// }
//btnDelete.addEventListener('click',deleteFn)
常量equalFn=函数(符号){
让numbers=labelUser.value.split(`${sign}`)
const operation=operations[`${sign}`]
让结果=运算(+数字[0],+数字[1])
labelUser.value=结果
console.log(结果类型、编号)
返回
}
btnEqual.addEventListener('click',equalFn.bind(null,sign))
}
btnPlus.addEventListener('click',doOpr.bind(null,+'))
btnExtr.addEventListener('click',doOpr.bind(null,'-'))
*,
*::之后,
*::之前{
保证金:0;
填充:0;
框大小:继承;
}
html{
字体大小:62.5%;
框大小:边框框;
}
.集装箱{
位置:绝对位置;
最高:50%;
左:50%;
转换:翻译(-50%,-50%);
宽度:25%;
身高:85%;
背景颜色:橄榄色;
显示:网格;
网格模板列:重复(4,1fr);
网格模板行:重复(6,1fr);
}
.用户表格{
网格行:1/3;
网格柱:1/-1;
宽度:100%;
身高:100%;
显示器:flex;
证明内容:中心;
对齐项目:居中;
}
.用户输入{
宽度:90%;
身高:80%;
字号:6rem;
文本对齐:右对齐;
填充:0 3rem;
}

基本计算器
附加
提取
平等的
删除

如果您:

  • 输入“2”
  • 按“添加”按钮
  • 输入“3”
  • 按“相等”按钮
  • 按“添加”按钮
  • 键入“4”
  • 按“相等”按钮
  • 第二步。将向“相等”按钮添加事件侦听器,然后单击(步骤4)。它将执行添加逻辑。然而,听者仍然存在。在步骤5。添加了另一个侦听器。在步骤7。两个事件侦听器触发:第一个侦听器将执行加法(5+4=9),第二个侦听器将尝试通过在
    +
    上拆分并将两个值相加来再次执行加法。但是,该值已仅为“9”,因此会出现问题,因为没有两个操作数:

    const操作={
    “+”:(a,b)=>a+b,
    }
    const value=“9”;
    常量编号=值。拆分(“+”);
    常数a=+数字[0];
    常数b=+数字[1];
    控制台日志(编号a、b);
    
    log(operations[“+”](a,b))
    请提供一个runnable来演示我所做的问题。这是缺点。伙计们,你们能找到什么吗?或者我应该重新发布这个问题吗?非常感谢。这是一个非常聪明的解决方案。但我猜它不能计算提取率。呃,我发现了。你刚刚错过了第一个if block for of loop的大括号:)再次感谢:)哦,我的括号不好。我已经添加了它们。谢谢你发现了。