为什么JavaScript楼层数学代码返回nan?
不幸的是,我得到了$NaN span的内容是为什么JavaScript楼层数学代码返回nan?,javascript,math,floor,Javascript,Math,Floor,不幸的是,我得到了$NaN span的内容是0,你知道,没有什么特别的,我一定是在做傻事,所以我完全糊涂了 谢谢。innerHTML返回一个字符串。字符串不能.floor编辑。您必须先parseInt()。显示的代码不完整,无法跟踪。但我假设NaN首先被传递到Floor()。将有效的数字/数字字符串传递到floor()以使其正常工作。错误在问题中未显示的代码逻辑中 编辑: 查看代码后,很明显问题是由于错误的赋值操作造成的。如果调用了“If”部分,则一切正常,但如果调用了“else”部分,则从未创
0
,你知道,没有什么特别的,我一定是在做傻事,所以我完全糊涂了
谢谢。innerHTML返回一个字符串。字符串不能
.floor
编辑。您必须先parseInt()
。显示的代码不完整,无法跟踪。但我假设NaN首先被传递到Floor()。将有效的数字/数字字符串传递到floor()以使其正常工作。错误在问题中未显示的代码逻辑中
编辑:
查看代码后,很明显问题是由于错误的赋值操作造成的。如果调用了“If”部分,则一切正常,但如果调用了“else”部分,则从未创建或分配“num”值,导致其为NaN。要解决此问题,我建议执行以下操作:
更改此项:
var num = Math.floor(document.getElementById("num").innerHTML);
document.getElementById("num").innerHTML = num+1;
}
else{
document.getElementById("num").innerHTML = num-1;
}
为此:
if(document.getElementById("div").style.top === "40px"){
var num = Math.floor(document.getElementById("num").innerHTML);
document.getElementById("num").innerHTML = num+1;
}
else{
document.getElementById("num").innerHTML = num-1;
}
您的完整代码显示了-1不起作用的原因
var num = Math.floor(document.getElementById("num").innerHTML);
if(document.getElementById("div").style.top === "40px"){
document.getElementById("num").innerHTML = num+1;
}
else{
document.getElementById("num").innerHTML = num-1;
}
那么什么是未定义-1
?嗯,它是NaN
!为什么?因为num
是在if中设置的,而不是在else中设置的
你怎么修理它?将
var num
行移到if之外 但是为什么我在-1部分只得到$NaN?我忘了在原来的问题中说,但是num+1起作用了!我刚刚尝试了parseInt(document.getElementById(“num”).innerHTML)代码>。但是它仍然返回NaN,所以不要连锁调用并开始检查单个元素x=document.getElementById('num')
。那有什么回报吗y=x.innerHTML
,是否返回任何内容,等等……不正确。JavaScript在这种情况下会自动转换;您不需要先调用parseInt()
。在JavaScript控制台中输入以下内容:Math.floor(7.3)
(产生7)然后Math.floor('7.3')
(也产生7)。这就是我所想的@EthanBrown,但是我应该如何解决nan问题呢?因为innerHTML
是nan。如果你要发布代码,它应该是有效的代码……If在哪里?美元是从哪里来的?你能在那里抛出一些console.log
语句来看看你得到了什么,因为你所做的没有本质上的错误。我会这样做:var elt=document.getElementById('num');控制台日志(elt);var numStr=elt.innerHTML;console.log(numStr)代码>。然后答案应该变得清晰。这是谢谢,我已经编辑了我的答案,包括问题和它的修复。
if (document.getElementById("div").style.top === "40px") {
var num = Math.floor(document.getElementById("num").innerHTML);
document.getElementById("num").innerHTML = num + 1;
} else {
document.getElementById("num").innerHTML = num - 1;
}