错误:未捕获的类型错误:num.replace 不是函数

时间:2021-01-07 22:51:35

标签: javascript

编码新手和网站新手。

我正在尝试根据 YouTube 视频构建一个计算器,我一直在按照这些步骤操作,直到在 console.log 中遇到此错误:Uncaught TypeError: num.replace is not a function。

  • 我已将 github 中的实际 JS 复制并粘贴到我的 JS 文件中,并且运行良好。
  • 我已将我的代码和 JS 从 github 复制并粘贴到 excel 中,并进行并排比较,所有内容都排列整齐。
  • 我已将我的代码和 JS 从 github 复制并粘贴到文本比较站点中,并进行并排比较,所有内容都排列整齐。

不知道还能做什么或为什么会收到此错误。这个菜鸟将不胜感激任何帮助!

我的代码如下:


function getHistory(){
    return document.getElementById("history-value").innerText;
}
function printHistory(num){
    document.getElementById("history-value").innerText=num;
}
function getOutput(){
    return document.getElementById("output-value").innerText;
}
function printOutput(num){
    if(num==""){
        document.getElementById("output-value").innerText=num;
    }
    else{
        document.getElementById("output-value").innerText=getFormattedNumber(num);
}
    }
function getFormattedNumber(num){
    if(num=="-"){
        return "";
    }
    let n = Number(num);
    let value = n.toLocaleString("en");
    return value;
}
function reverseNumberFormat(num){
    return Number(num.replace(/,/g,''));
}
let operator = document.getElementsByClassName("operator");
for(let i=0;i<operator.length;i++){
    operator[i].addEventListener("click", function(){
        if(this.id=="clear"){
            printHistory("");
            printOutput("");
        }
        else if(this.id=="backspace"){
            let output=reverseNumberFormat(getOutput).toString();
            if(output){
                output= output.substr(0,output.length-1);
                printOutput(output);
            }
        }
    });
}

let number = document.getElementsByClassName("number");
for (let i=0; i< number.length;i++){
    number[i].addEventListener("click", function(){
        let output=reverseNumberFormat(getOutput());
        if(output!=NaN){
            output=output+this.id;
            printOutput(output);
        }
    });
}

1 个答案:

答案 0 :(得分:1)

传递的值可能不是字符串,你应该这样做

function reverseNumberFormat(num){
    return Number(num.toString().replace(/,/g,''));
}

这就是错误是 TypeError 的原因