Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
I';我试图将Javascript计算器作为freecodecamp任务的一部分,但我可以';我不能让它与IDs和数据操作员一起工作_Javascript_Html - Fatal编程技术网

I';我试图将Javascript计算器作为freecodecamp任务的一部分,但我可以';我不能让它与IDs和数据操作员一起工作

I';我试图将Javascript计算器作为freecodecamp任务的一部分,但我可以';我不能让它与IDs和数据操作员一起工作,javascript,html,Javascript,Html,我已经在html中添加了ID、数据运算符和数字,但输出仍然在屏幕上显示“NaN” 我尝试在套件中测试它,但以下测试未通过: 我的计算器应该包含10个可点击的元素,每个元素包含一个0-9之间的数字,并具有以下相应的id:id=“零”、id=“一”、id=“二”、id=“三”、id=“四”、id=“五”、id=“六”、id=“七”、id=“八”和id=“九” 我的计算器应该包含4个可单击的元素,每个元素都包含4个主要数学运算符中的一个,并具有以下相应的id:id=“add”,id=“subtract

我已经在html中添加了ID、数据运算符和数字,但输出仍然在屏幕上显示“NaN”

我尝试在套件中测试它,但以下测试未通过:

  • 我的计算器应该包含10个可点击的元素,每个元素包含一个0-9之间的数字,并具有以下相应的id:id=“零”、id=“一”、id=“二”、id=“三”、id=“四”、id=“五”、id=“六”、id=“七”、id=“八”和id=“九”

  • 我的计算器应该包含4个可单击的元素,每个元素都包含4个主要数学运算符中的一个,并具有以下相应的id:id=“add”,id=“subtract”,id=“multiply”,id=“divide”

  • 我的计算器应包含id为“clear”的可单击元素

  • 在任何时候,按clear(清除)按钮清除输入和输出值,并将计算器返回到其初始化状态;0应显示在id为“display”(显示)的元素中

    5.在任何时候,按下清除按钮清除输入和输出值,并将计算器返回到其初始化状态;0应显示在id为“display”的元素中

  • 以任何顺序,我应该能够对任意长度的数字链进行加、减、乘和除,当我点击“=”时,正确的结果应该显示在id为“display”的元素中

  • 以任何顺序,我应该能够对任意长度的数字链进行加、减、乘和除,当我点击“=”时,正确的结果应该显示在id为“display”的元素中

  • 我应该能够对包含小数点的数字执行任何运算(+、-、*、/)

  • 我应该能够对包含小数点的数字执行任何运算(+、-、*、/)

  • 我猜我必须在某个地方使用switch语句? 有人能帮我吗?谢谢

    函数getHistory(){ return document.getElementById('previous-operand').innerText; } 函数printHistory(num){ document.getElementById('previous-operand')。innerText=num; } 函数getOutput(){ return document.getElementById('display').innerText; } 函数printOutput(num){ 如果(num==“”){ document.getElementById('display')。innerText=num; }否则{ document.getElementById('display').innerText=getFormattedNumber(num); } } 函数getFormattedNumber(num){ 如果(num==“减”){ 返回“”; } var n=数量(num); var值=n.toLocaleString(“en”); 返回值; } 函数反转枚举格式(num){ 返回编号(num.replace(/,/g',); } var operator=document.getElementsByClassName(“operator”); 对于(var i=0;i
    
    自动控制
    德尔
    ÷
    1.
    2.
    3.
    *
    4.
    5.
    6.
    +
    7.
    8.
    9
    -
    .
    0
    =
    
    我制作了一个代码笔,用最少的样式来演示您的应用程序,我建议您在下次寻求帮助时这样做

    我相信“NaN”值是由这个函数返回的

    function getFormattedNumber(num) {
      if (num == "minus") {
        return "";
      }
      var n = Number(num);
      var value = n.toLocaleString("en");
      return value;
    }
    
    问题是,您正在将一个字符串传递给此函数,即单击的数字按钮的
    id
    值附加到当前输出值。然后使用
    Number(num)
    将此字符串强制为一个数字

    任何时候,当您试图从带有非数字字符的字符串中创建一个数字时,结果将是NaN。在这种情况下,
    id
    值为“1”、“2”等,这些值都不能强制为数字-您将得到NaN

    可能的解决办法:

  • 不要对
    id
    属性使用单词值。使用“2”而不是“2”。更一般地说,在整个代码中,您在字符串和数字之间来回转换了很多次,了解您何时需要字符串以及何时需要数字会有帮助
  • id
    属性转换为一个数字,然后再将其连接到输出。了解加号(+)何时为以及何时为非常重要的一点
  • 在整个代码中添加对“NaN”的检查。您有一个:
    output!=NaN
    ,但这甚至不等于
    NaN
    。请尝试类似于
    typeof output==“number”

  • 祝你好运。

    既然你的问题很难理解,你能把它编辑成一个好问题吗?