- javascript/
- I';我试图将Javascript计算器作为freecodecamp任务的一部分,但我可以';我不能让它与IDs和数据操作员一起工作
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”
祝你好运。既然你的问题很难理解,你能把它编辑成一个好问题吗?